46 bool getting_key_data = true ;
47 size_t len = strlen( s ) ;
48 for(
unsigned int j = 0; j < len; j++ )
50 if( getting_key_data )
58 getting_key_data = false ;
70 _entries[parseHex( key.c_str(), key.length() )] = parseHex( value.c_str(), value.length() ) ;
71 getting_key_data = true ;
76 if( getting_key_data )
77 cerr <<
"BESProcessEncodedString: parse error.\n" ;
80 _entries[parseHex( key.c_str(), key.length() )] = parseHex( value.c_str(), value.length() ) ;
85 cerr <<
"BESProcessEncodedString: Passing NULL pointer.\n" ;
91 BESProcessEncodedString::parseHex(
const char *s,
unsigned int len )
95 char *hexstr =
new char[len + 1] ;
99 strncpy( hexstr, s, len ) ;
101 if(strlen( hexstr ) == 0 )
107 register unsigned int x,y;
108 for( x = 0, y = 0; hexstr[y] && y < len && x < len; x++, y++ )
110 if( ( hexstr[x] = hexstr[y] ) ==
'+' )
115 else if( hexstr[x] ==
'%' )
117 hexstr[x] = convertHex( &hexstr[y+1] ) ;
128 BESProcessEncodedString::convertHex(
const char* what )
133 digit = (what[0] >=
'A' ? ((what[0] & 0x4F) -
'A')+10 : (what[0] -
'0'));
135 digit += (what[1] >=
'A' ? ((what[1] & 0x4F) -
'A')+10 : (what[1] -
'0'));
137 return (
unsigned int)digit;
143 map<string,string>::iterator i ;
144 i = _entries.find( s ) ;
145 if( i != _entries.end() )
162 << (
void *)
this <<
")" << endl ;
164 if( _entries.size() )
168 map<string,string>::const_iterator i ;
169 map<string,string>::const_iterator ie = _entries.end() ;
170 for( i = _entries.begin(); i != ie; ++i )
173 << (*i).second << endl ;
BESProcessEncodedString(const char *s)
static ostream & LMarg(ostream &strm)
virtual void dump(ostream &strm) const
dumps information about this object
string get_key(const string &s)