removed the char allocator. Started cleaning up the document code.
diff --git a/tinyxml2.h b/tinyxml2.h
index f48a5cf..c90e181 100644
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -38,6 +38,7 @@
class XMLStreamer;
+/*
// internal - move to separate namespace
struct CharBuffer
{
@@ -47,14 +48,19 @@
static CharBuffer* Construct( const char* in );
static void Free( CharBuffer* );
};
+*/
-// FIXME: refactor to be the basis for all string handling.
class StrPair
{
public:
enum {
NEEDS_ENTITY_PROCESSING = 0x01,
- NEEDS_NEWLINE_NORMALIZATION = 0x02
+ NEEDS_NEWLINE_NORMALIZATION = 0x02,
+
+ TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
+ ATTRIBUTE_NAME = 0,
+ ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
+ COMMENT = NEEDS_NEWLINE_NORMALIZATION,
};
StrPair() : flags( 0 ), start( 0 ), end( 0 ) {}
@@ -103,7 +109,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; }
- char* ParseText( char* in, StrPair* pair, const char* endTag );
+ char* ParseText( char* in, StrPair* pair, const char* endTag, int strFlags );
char* ParseName( char* in, StrPair* pair );
char* Identify( XMLDocument* document, char* p, XMLNode** node );
};
@@ -132,7 +138,7 @@
protected:
XMLNode( XMLDocument* );
- void Unlink( XMLNode* child );
+ void ClearChildren();
XMLDocument* document;
XMLNode* parent;
@@ -145,6 +151,7 @@
XMLNode* next;
private:
+ void Unlink( XMLNode* child );
};
@@ -233,10 +240,13 @@
class XMLDocument : public XMLNode
{
public:
- XMLDocument();
+ XMLDocument();
~XMLDocument();
bool Parse( const char* );
+ bool Load( const char* );
+ bool Load( FILE* );
+
void Print( XMLStreamer* streamer=0 );
/*
@@ -244,15 +254,25 @@
XMLNode* RootElement();
*/
enum {
+ NO_ERROR = 0,
ERROR_ELEMENT_MISMATCH,
ERROR_PARSING_ELEMENT,
ERROR_PARSING_ATTRIBUTE
};
void SetError( int error, const char* str1, const char* str2 );
+
+ int GetErrorID() const { return errorID; }
+ const char* GetErrorStr1() const { return errorStr1; }
+ const char* GetErrorStr2() const { return errorStr2; }
private:
XMLDocument( const XMLDocument& ); // intentionally not implemented
- CharBuffer* charBuffer;
+ void InitDocument();
+
+ bool errorID;
+ const char* errorStr1;
+ const char* errorStr2;
+ char* charBuffer;
};