refactored logic to use the StrPair. Still cleaning up bugs.
diff --git a/tinyxml2.h b/tinyxml2.h
index fe3979e..779fdde 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -50,21 +50,25 @@
{
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 @@
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 );
};