osgEarth 2.1.1
|
Public Member Functions | |
StringTokenizer (const std::string &delims=" \t\r\n", const std::string "es="'\"") | |
StringTokenizer (const std::string &input, StringVector &output, const std::string &delims=" \t\r\n", const std::string "es="'\"", bool keepEmpties=true, bool trimTokens=true) | |
void | tokenize (const std::string &input, StringVector &output) const |
bool & | keepEmpties () |
bool & | trimTokens () |
void | addDelim (char delim, bool keepAsToken=false) |
void | addDelims (const std::string &delims, bool keepAsTokens=false) |
void | addQuote (char delim, bool keepInToken=false) |
void | addQuotes (const std::string &delims, bool keepInTokens=false) |
Private Types | |
typedef std::map< char, bool > | TokenMap |
Private Attributes | |
TokenMap | _delims |
TokenMap | _quotes |
bool | _allowEmpties |
bool | _trimTokens |
Splits a string up into a vector of strings based on a set of delimiters, quotes, and rules.
Definition at line 94 of file StringUtils.
typedef std::map<char,bool> osgEarth::StringTokenizer::TokenMap [private] |
Definition at line 119 of file StringUtils.
StringTokenizer::StringTokenizer | ( | const std::string & | delims = " \t\r\n" , |
const std::string & | quotes = "'\"" |
||
) |
Definition at line 24 of file StringUtils.cpp.
: _allowEmpties( true ), _trimTokens ( true ) { addDelims( delims ); addQuotes( quotes ); }
StringTokenizer::StringTokenizer | ( | const std::string & | input, |
StringVector & | output, | ||
const std::string & | delims = " \t\r\n" , |
||
const std::string & | quotes = "'\"" , |
||
bool | keepEmpties = true , |
||
bool | trimTokens = true |
||
) |
Definition at line 32 of file StringUtils.cpp.
: _allowEmpties( allowEmpties ), _trimTokens ( trimTokens ) { addDelims( delims ); addQuotes( quotes ); tokenize( input, output ); }
void StringTokenizer::addDelim | ( | char | delim, |
bool | keepAsToken = false |
||
) |
Definition at line 47 of file StringUtils.cpp.
{ _delims[delim] = keep; }
void StringTokenizer::addDelims | ( | const std::string & | delims, |
bool | keepAsTokens = false |
||
) |
Definition at line 53 of file StringUtils.cpp.
{ for( unsigned i=0; i<delims.size(); ++i ) addDelim( delims.at(i), keep ); }
void StringTokenizer::addQuote | ( | char | delim, |
bool | keepInToken = false |
||
) |
Definition at line 60 of file StringUtils.cpp.
{ _quotes[quote] = keep; }
void StringTokenizer::addQuotes | ( | const std::string & | delims, |
bool | keepInTokens = false |
||
) |
Definition at line 66 of file StringUtils.cpp.
{ for( unsigned i=0; i<quotes.size(); ++i ) addQuote( quotes.at(i), keep ); }
bool& osgEarth::StringTokenizer::keepEmpties | ( | ) | [inline] |
Definition at line 106 of file StringUtils.
{ return _allowEmpties; }
void StringTokenizer::tokenize | ( | const std::string & | input, |
StringVector & | output | ||
) | const |
Definition at line 73 of file StringUtils.cpp.
{ output.clear(); std::stringstream buf; bool quoted = false; for( std::string::const_iterator i = input.begin(); i != input.end(); ++i ) { char c = *i; TokenMap::const_iterator q = _quotes.find( c ); if ( quoted ) { if ( q != _quotes.end() ) { quoted = false; if ( q->second ) buf << c; } else { buf << c; } } else { if ( q != _quotes.end() ) { quoted = true; if ( q->second ) buf << c; } else { TokenMap::const_iterator d = _delims.find( c ); if ( d == _delims.end() ) { buf << c; } else { std::string token = _trimTokens ? trim(buf.str()) : buf.str(); if ( _allowEmpties || !token.empty() ) output.push_back( token ); if ( d->second == true ) { output.push_back( std::string(1, c) ); } buf.str(""); } } } } std::string last = _trimTokens ? trim(buf.str()) : buf.str(); if ( !last.empty() ) output.push_back( last ); }
bool& osgEarth::StringTokenizer::trimTokens | ( | ) | [inline] |
Definition at line 108 of file StringUtils.
{ return _trimTokens; }
bool osgEarth::StringTokenizer::_allowEmpties [private] |
Definition at line 122 of file StringUtils.
TokenMap osgEarth::StringTokenizer::_delims [private] |
Definition at line 120 of file StringUtils.
TokenMap osgEarth::StringTokenizer::_quotes [private] |
Definition at line 121 of file StringUtils.
bool osgEarth::StringTokenizer::_trimTokens [private] |
Definition at line 123 of file StringUtils.