diff options
Diffstat (limited to 'dep/src/sockets/Parse.cpp')
-rw-r--r-- | dep/src/sockets/Parse.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/dep/src/sockets/Parse.cpp b/dep/src/sockets/Parse.cpp index b0d51e187c8..ccbd553b0e6 100644 --- a/dep/src/sockets/Parse.cpp +++ b/dep/src/sockets/Parse.cpp @@ -2,35 +2,45 @@ ** ** Written: 1999-Feb-10 grymse@alhem.net **/ + /* Copyright (C) 1999-2007 Anders Hedstrom + This library is made available under the terms of the GNU GPL. + If you would like to use this library in a closed-source application, a separate license agreement is available. For information about the closed-source license agreement for the C++ sockets library, please visit http://www.alhem.net/Sockets/license.html and/or email license@alhem.net. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <stdlib.h> #include <string.h> + #include "Parse.h" + #ifdef SOCKETS_NAMESPACE namespace SOCKETS_NAMESPACE { #endif + /* implementation of class Parse */ + Parse::Parse() :pa_the_str("") ,pa_splits("") @@ -43,6 +53,7 @@ Parse::Parse() ,pa_quote(false) { } + Parse::Parse(const std::string&s) :pa_the_str(s) ,pa_splits("") @@ -55,6 +66,7 @@ Parse::Parse(const std::string&s) ,pa_quote(false) { } + Parse::Parse(const std::string&s,const std::string&sp) :pa_the_str(s) ,pa_splits(sp) @@ -67,6 +79,7 @@ Parse::Parse(const std::string&s,const std::string&sp) ,pa_quote(false) { } + Parse::Parse(const std::string&s,const std::string&sp,short /*nospace*/) :pa_the_str(s) ,pa_splits(sp) @@ -80,10 +93,13 @@ Parse::Parse(const std::string&s,const std::string&sp,short /*nospace*/) { } + Parse::~Parse() { } + #define C ((pa_the_ptr<pa_the_str.size()) ? pa_the_str[pa_the_ptr] : 0) + short Parse::issplit(const char c) { for (size_t i = 0; i < pa_splits.size(); i++) @@ -91,9 +107,11 @@ short Parse::issplit(const char c) return 1; return 0; } + void Parse::getsplit() { size_t x; + if (C == '=') { x = pa_the_ptr++; @@ -109,12 +127,14 @@ void Parse::getsplit() pa_the_ptr++; pa_ord = (x < pa_the_str.size()) ? pa_the_str.substr(x,pa_the_ptr - x) : ""; } + std::string Parse::getword() { size_t x; int disabled = 0; int quote = 0; int rem = 0; + if (pa_nospace) { while (C && issplit(C)) @@ -190,15 +210,18 @@ std::string Parse::getword() } return pa_ord; } + void Parse::getword(std::string&s) { s = Parse::getword(); } + void Parse::getsplit(std::string&s) { Parse::getsplit(); s = pa_ord; } + void Parse::getword(std::string&s,std::string&fill,int l) { Parse::getword(); @@ -207,6 +230,7 @@ void Parse::getword(std::string&s,std::string&fill,int l) s += fill; s += pa_ord; } + std::string Parse::getrest() { std::string s; @@ -215,24 +239,29 @@ std::string Parse::getrest() s = (pa_the_ptr < pa_the_str.size()) ? pa_the_str.substr(pa_the_ptr) : ""; return s; } + void Parse::getrest(std::string&s) { while (C && (C == ' ' || C == 9 || issplit(C))) pa_the_ptr++; s = (pa_the_ptr < pa_the_str.size()) ? pa_the_str.substr(pa_the_ptr) : ""; } + long Parse::getvalue() { Parse::getword(); return atol(pa_ord.c_str()); } + void Parse::setbreak(const char c) { pa_breakchar = c; } + int Parse::getwordlen() { size_t x,y = pa_the_ptr,len; + if (C == pa_breakchar && pa_breakchar) { x = pa_the_ptr++; @@ -250,19 +279,23 @@ int Parse::getwordlen() pa_the_ptr = y; return (int)len; } + int Parse::getrestlen() { size_t y = pa_the_ptr; size_t len; + while (C && (C == ' ' || C == 9 || issplit(C))) pa_the_ptr++; len = strlen(pa_the_str.c_str() + pa_the_ptr); pa_the_ptr = y; return (int)len; } + void Parse::getline() { size_t x; + x = pa_the_ptr; while (C && C != 13 && C != 10) pa_the_ptr++; @@ -272,11 +305,13 @@ void Parse::getline() if (C == 10) pa_the_ptr++; } + void Parse::getline(std::string&s) { getline(); s = pa_ord; } + /* end of implementation of class Parse */ /***************************************************/ #ifdef SOCKETS_NAMESPACE @@ -284,3 +319,4 @@ void Parse::getline(std::string&s) #endif + |