|
Gaudi Framework, version v21r8 |
| Home | Generated: 17 Mar 2010 |
#include <Tokenizer.h>

Public Member Functions | |
| Token (const Token ©) | |
| Copy constructor. | |
| Token () | |
| Standard constructor. | |
| void | make (const std::string &s, long st, const char *delim, const char *tagBegin, const char *tagEnd, const char *eq, const char *valBegin, const char *valEnd) |
| Create token from string. | |
| virtual | ~Token () |
| Standard Destructor. | |
| Token & | operator= (const Token ©) |
| Assignment operator. | |
| bool | operator== (const Token ©) const |
| long | length () const |
| Total token length. | |
| const std::string & | tag () const |
| Acces tag value. | |
| const std::string & | value () const |
| Access value. | |
| void | resolveValue () |
| Resolve value from environment. | |
Private Attributes | |
| long | m_length |
| Toke length. | |
| std::string | m_tag |
| Tag variable. | |
| std::string | m_value |
| Value variable. | |
Definition at line 28 of file Tokenizer.h.
| Tokenizer::Token::Token | ( | const Token & | copy | ) | [inline] |
| Tokenizer::Token::Token | ( | ) | [inline] |
| virtual Tokenizer::Token::~Token | ( | ) | [inline, virtual] |
| void Tokenizer::Token::make | ( | const std::string & | s, | |
| long | st, | |||
| const char * | delim, | |||
| const char * | tagBegin, | |||
| const char * | tagEnd, | |||
| const char * | eq, | |||
| const char * | valBegin, | |||
| const char * | valEnd | |||
| ) |
Create token from string.
Definition at line 60 of file Tokenizer.cpp.
00060 { 00061 long lenTagBeg = ::strlen(tagBeg); 00062 long lenTagEnd = ::strlen(tagEnd); 00063 long lenValBeg = ::strlen(valBeg); 00064 long lenValEnd = ::strlen(valEnd); 00065 long lenDelim = ::strlen(delim); 00066 long lenEq = ::strlen(eq); 00067 long slen = s.length(); 00068 long start = st; 00069 while(::strncmp(s.c_str()+start,delim,lenDelim)==0) start += lenDelim; 00070 long posTag = (lenTagBeg>0) ? s.find(tagBeg, start) + lenTagBeg : start; 00071 long posDelim = s.find(delim,posTag) > 0 ? s.find(delim,posTag) : slen; 00072 long posEq = s.find(eq, posTag) > 0 ? s.find(eq, posTag) : posDelim-posTag; 00073 long lenTag = (lenTagEnd>0) ? s.find(tagEnd, posTag)-posTag : (posEq>0) ? (posEq>posTag) ? posEq-posTag : posDelim-posTag : posDelim; 00074 posEq = s.find(eq, posTag+lenTag+lenTagEnd)+lenEq; 00075 long posVal = (lenValBeg>0) ? s.find(valBeg, posEq)+lenValBeg : posEq; 00076 posDelim = (lenDelim>0) ? s.find(delim, posVal+lenValBeg) : slen; 00077 long lenVal = (lenValEnd>0) ? s.find(valEnd, posVal)-posVal : ((posDelim>=0) ? posDelim : slen)-posVal; 00078 00079 m_tag = m_value = ""; 00080 // Ooops: Valid tag found: 00081 if ( start >= 0 && posTag >= 0 ) { 00082 m_tag = s.substr(posTag, lenTag); 00083 m_length = posTag+m_tag.length()+lenTagEnd-st; 00084 } 00085 // Ooops: there is also a value: 00086 if ( posVal >= 0 && lenVal >= 0 ) { 00087 m_value = s.substr(posVal, lenVal); 00088 m_length = posVal+m_value.length()+lenValEnd-st; 00089 } 00090 while(::strncmp(s.c_str()+start+m_length,delim,lenDelim)==0) m_length += lenDelim; 00091 }
| Tokenizer::Token & Tokenizer::Token::operator= | ( | const Token & | copy | ) |
| long Tokenizer::Token::length | ( | ) | const [inline] |
Total token length.
Definition at line 54 of file Tokenizer.h.
00054 { 00055 return m_length; 00056 }
| const std::string& Tokenizer::Token::tag | ( | ) | const [inline] |
| const std::string& Tokenizer::Token::value | ( | ) | const [inline] |
| void Tokenizer::Token::resolveValue | ( | ) |
Resolve value from environment.
Definition at line 29 of file Tokenizer.cpp.
00029 { 00030 std::string res; 00031 if ( System::resolveEnv(m_value, res).isSuccess() ) { 00032 m_value = res; 00033 } 00034 }
long Tokenizer::Token::m_length [private] |
std::string Tokenizer::Token::m_tag [private] |
std::string Tokenizer::Token::m_value [private] |