void SP_XmlSTagAttrNameReader :: read( SP_XmlSTagParser * parser, char c ) { if( 1 == mWait4Quot ) { if( '"' == c ) { addAttrName( parser, mBuffer->getBuffer() ); changeReader( parser, new SP_XmlSTagEqualMarkReader() ); } else { mBuffer->append( c ); } } else { if( isspace( c ) ) { if( 0 == mBuffer->getSize() ) { //leading space, skip } else { addAttrName( parser, mBuffer->getBuffer() ); changeReader( parser, new SP_XmlSTagEqualMarkReader() ); } } else { if( '"' == c && 0 == mBuffer->getSize() ) { mWait4Quot = 1; } else if( '=' == c ) { addAttrName( parser, mBuffer->getBuffer() ); SP_XmlSTagReader * reader = new SP_XmlSTagEqualMarkReader(); changeReader( parser, reader ); reader->read( parser, c ); } else { mBuffer->append( c ); } } } }
void Configs::readArg(char* arg) { if (arg[0] == '-') changeReader(arg[1]); else (this->*m_paramReader)(arg); }
void SP_XmlSTagEqualMarkReader :: read( SP_XmlSTagParser * parser, char c ) { if( isspace( c ) ) { //skip } else if( '=' == c ) { changeReader( parser, new SP_XmlSTagAttrValueReader() ); } else { //addAttrValue( parser, "" ); //SP_XmlSTagReader * reader = new SP_XmlSTagAttrNameReader(); //changeReader( parser, reader ); //reader->read( parser, c ); setError( parser, "miss '=' between name & value" ); } }
void SP_XmlSTagNameReader :: read( SP_XmlSTagParser * parser, char c ) { if( isspace( c ) ) { if( 0 == mBuffer->getSize() ) { //leading space, skip } else { setName( parser, mBuffer->getBuffer() ); changeReader( parser, new SP_XmlSTagAttrNameReader() ); } } else if( '\0' == c ) { setError( parser, "miss tag name" ); } else { mBuffer->append( c ); } }
void SP_XmlSTagAttrValueReader :: read( SP_XmlSTagParser * parser, char c ) { if( 0 == mHasReadQuot ) { if( isspace( c ) ) { //skip } else if( '"' == c ) { mHasReadQuot = 1; } else if( '\'' == c ) { mHasReadQuot = 2; } else { setError( parser, "unknown attribute value start" ); } } else { if( ( 1 == mHasReadQuot && '"' == c ) || ( 2 == mHasReadQuot && '\'' == c ) ) { addAttrValue( parser, mBuffer->getBuffer() ); changeReader( parser, new SP_XmlSTagAttrNameReader() ); } else { mBuffer->append( c ); } } }