Documentation

Generated on Thu Aug 31 00:02:40 2006

 

StringTokenizer Class Reference

#include <StringTokenizer.h>

List of all members.


Public Member Functions

 StringTokenizer (string, string, bool)
bool hasMoreTokens (void) const
string nextToken ()
int countTokens (void) const
string restTokens (void) const

Private Member Functions

string::const_iterator skipDelimiters (string::const_iterator) const
string::const_iterator scanToken (string::const_iterator) const
bool isDelimiter (char c) const

Private Attributes

string::const_iterator currentPosition
string text
string delimiters
bool retDelims

Detailed Description

Definition at line 18 of file StringTokenizer.h.


Constructor & Destructor Documentation

StringTokenizer::StringTokenizer ( string  ,
string  ,
bool   
)

Definition at line 31 of file StringTokenizer.cpp.

References currentPosition, delimiters, retDelims, and text.

Referenced by Handler::interpreter(), Commands::opts(), Configuration::parse_config_file(), Commands::parsedir(), Commands::pasv(), and Configuration::set_structs().

00033 {
00034   this->text = str;
00035   this->currentPosition = text.begin();
00036   this->delimiters = delim;
00037   this->retDelims = returnDelims;
00038 }


Member Function Documentation

int StringTokenizer::countTokens ( void   )  const

Definition at line 91 of file StringTokenizer.cpp.

References currentPosition, scanToken(), and skipDelimiters().

Referenced by Handler::interpreter(), and Commands::parsedir().

00092 {
00093   int count = 0;
00094   string::const_iterator currpos = this->currentPosition;
00095   while (currpos != this->text.end()) {
00096     currpos = skipDelimiters(currpos);
00097     if (currpos == this->text.end())
00098       break;
00099     currpos = scanToken(currpos);
00100     count++;
00101   }
00102   return count;
00103 }

Here is the call graph for this function:

bool StringTokenizer::hasMoreTokens ( void   )  const

Definition at line 71 of file StringTokenizer.cpp.

References skipDelimiters().

Referenced by Commands::parsedir(), and Configuration::set_structs().

00072 {
00073   return((skipDelimiters(this->currentPosition) == this->text.end())
00074       ? false : true);
00075 }

Here is the call graph for this function:

bool StringTokenizer::isDelimiter ( char  c  )  const [inline, private]

Definition at line 30 of file StringTokenizer.h.

References delimiters.

Referenced by restTokens(), scanToken(), and skipDelimiters().

00031     { return(delimiters.find(c) == string::npos ? false : true ); }

string StringTokenizer::nextToken (  ) 

Definition at line 78 of file StringTokenizer.cpp.

References currentPosition, Log::log_this(), logging, scanToken(), skipDelimiters(), and TYPE_INFO.

Referenced by Handler::interpreter(), Configuration::parse_config_file(), Commands::parsedir(), Commands::pasv(), and Configuration::set_structs().

00079 {
00080   this->currentPosition = skipDelimiters(this->currentPosition);
00081 
00082   if (this->currentPosition == this->text.end())
00083     logging->log_this(2, TYPE_INFO, "NoSuchElementException.");
00084 
00085   string::const_iterator start = this->currentPosition;
00086   this->currentPosition = scanToken(this->currentPosition);
00087   return string(start, this->currentPosition);
00088 }

Here is the call graph for this function:

string StringTokenizer::restTokens ( void   )  const

Definition at line 106 of file StringTokenizer.cpp.

References isDelimiter().

Referenced by Handler::interpreter(), and Configuration::set_structs().

00107 {
00108   return(string((isDelimiter(*this->currentPosition) ? this->currentPosition
00109           + 1 :this->currentPosition), this->text.end()));
00110 }

Here is the call graph for this function:

string::const_iterator StringTokenizer::scanToken ( string::const_iterator   )  const [private]

Definition at line 42 of file StringTokenizer.cpp.

References isDelimiter(), and retDelims.

Referenced by countTokens(), and nextToken().

00043 {
00044   while (startPos != this->text.end())
00045   {
00046     if (isDelimiter(*startPos))
00047     {
00048       if(retDelims)
00049         startPos++;
00050       break;
00051     }
00052     startPos++;
00053   }
00054   return startPos;
00055 }

Here is the call graph for this function:

string::const_iterator StringTokenizer::skipDelimiters ( string::const_iterator   )  const [private]

Definition at line 59 of file StringTokenizer.cpp.

References delimiters, isDelimiter(), and retDelims.

Referenced by countTokens(), hasMoreTokens(), and nextToken().

00060 {
00061   while (!retDelims && startPos != this->text.end())
00062   {
00063     if (!isDelimiter(*startPos) || (delimiters.find(*startPos) == string::npos))
00064       break;
00065     startPos++;
00066   }
00067   return startPos;
00068 }

Here is the call graph for this function:


Member Data Documentation

string::const_iterator StringTokenizer::currentPosition [private]

Definition at line 33 of file StringTokenizer.h.

Referenced by countTokens(), nextToken(), and StringTokenizer().

string StringTokenizer::delimiters [private]

Definition at line 35 of file StringTokenizer.h.

Referenced by isDelimiter(), skipDelimiters(), and StringTokenizer().

Definition at line 36 of file StringTokenizer.h.

Referenced by scanToken(), skipDelimiters(), and StringTokenizer().

string StringTokenizer::text [private]

Definition at line 34 of file StringTokenizer.h.

Referenced by StringTokenizer().


The documentation for this class was generated from the following files: