aboutsummaryrefslogtreecommitdiff
path: root/dep/src/sockets/Parse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/src/sockets/Parse.cpp')
-rw-r--r--dep/src/sockets/Parse.cpp36
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
+