refactored logic to use the StrPair. Still cleaning up bugs.

This commit is contained in:
Lee Thomason
2012-01-20 17:59:50 -08:00
parent d34f52c43b
commit e4422304e0
3 changed files with 78 additions and 66 deletions

View File

@@ -50,21 +50,25 @@ class StrPair
{
public:
enum {
NEEDS_FLUSH = 0x01,
NEEDS_ENTITY_PROCESSING = 0x02,
NEEDS_NEWLINE_NORMALIZATION = 0x04
NEEDS_ENTITY_PROCESSING = 0x01,
NEEDS_NEWLINE_NORMALIZATION = 0x02
};
StrPair() : flags( 0 ), start( 0 ), end( 0 ) {}
void Init( const char* start, char* end, int flags ) {
void Set( char* start, char* end, int flags ) {
this->start = start; this->end = end; this->flags = flags | NEEDS_FLUSH;
}
const char* GetStr();
bool Empty() const { return start == end; }
private:
enum {
NEEDS_FLUSH = 0x100
};
// After parsing, if *end != 0, it can be set to zero.
int flags;
const char* start;
char* start;
char* end;
};
@@ -96,7 +100,7 @@ protected:
inline static int IsAlphaNum( unsigned char anyByte ) { return ( anyByte <= 127 ) ? isalnum( anyByte ) : 1; }
inline static int IsAlpha( unsigned char anyByte ) { return ( anyByte <= 127 ) ? isalpha( anyByte ) : 1; }
const char* ParseText( char* in, const char* endTag, char** next );
char* ParseText( char* in, StrPair* pair, const char* endTag );
char* ParseName( char* in, StrPair* pair );
char* Identify( XMLDocument* document, char* p, XMLNode** node );
};