25#ifndef TINYXML2_INCLUDED
26#define TINYXML2_INCLUDED
28#if defined(ANDROID_NDK) || defined(__BORLANDC__)
55#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
63# pragma warning(disable: 4251)
67# ifdef TINYXML2_EXPORT
68# define TINYXML2_LIB __declspec(dllexport)
69# elif defined(TINYXML2_IMPORT)
70# define TINYXML2_LIB __declspec(dllimport)
81# define TIXMLASSERT( x ) if ( !(x)) { __debugbreak(); }
82# elif defined (ANDROID_NDK)
83# include <android/log.h>
84# define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
87# define TIXMLASSERT assert
90# define TIXMLASSERT( x ) {}
94#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
106 va_start( va, format );
107 int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
111#define TIXML_SSCANF sscanf_s
115#define TIXML_SNPRINTF snprintf
116#define TIXML_SSCANF sscanf
122static const int TIXML2_MAJOR_VERSION = 2;
123static const int TIXML2_MINOR_VERSION = 1;
124static const int TIXML2_PATCH_VERSION = 0;
159 StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
166 _flags =
flags | NEEDS_FLUSH;
172 return _start == _end;
177 _start =
const_cast<char*
>(
str);
182 char*
ParseText(
char* in,
const char* endTag,
int strFlags );
187 void CollapseWhitespace();
206template <
class T,
int INIT>
217 if ( _mem != _pool ) {
227 EnsureCapacity( _size+1 );
232 EnsureCapacity( _size+count );
233 T* ret = &_mem[_size];
239 return _mem[--_size];
243 TIXMLASSERT( _size >= count );
252 TIXMLASSERT( i>= 0 && i < _size );
257 TIXMLASSERT( i>= 0 && i < _size );
262 TIXMLASSERT( _size > 0 );
263 return _mem[ _size - 1];
283 void EnsureCapacity(
int cap ) {
284 if ( cap > _allocated ) {
285 int newAllocated = cap * 2;
286 T* newMem =
new T[newAllocated];
287 memcpy( newMem, _mem,
sizeof(T)*_size );
288 if ( _mem != _pool ) {
292 _allocated = newAllocated;
315 virtual void Free(
void* ) = 0;
327 MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
330 for(
int i=0; i<_blockPtrs.
Size(); ++i ) {
331 delete _blockPtrs[i];
339 return _currentAllocs;
345 Block* block =
new Block();
346 _blockPtrs.
Push( block );
348 for(
int i=0; i<
COUNT-1; ++i ) {
349 block->chunk[i].next = &block->chunk[i+1];
351 block->chunk[
COUNT-1].next = 0;
352 _root = block->chunk;
354 void* result = _root;
358 if ( _currentAllocs > _maxAllocs ) {
359 _maxAllocs = _currentAllocs;
365 virtual void Free(
void* mem ) {
370 Chunk* chunk = (Chunk*)mem;
372 memset( chunk, 0xfe,
sizeof(Chunk) );
378 printf(
"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
379 name, _maxAllocs, _maxAllocs*SIZE/1024, _currentAllocs, SIZE, _nAllocs, _blockPtrs.
Size() );
409 DynArray< Block*, 10 > _blockPtrs;
490 while( !
IsUTF8Continuation(*p) && isspace( *
reinterpret_cast<const unsigned char*
>(p) ) ) {
506 return ( ( ch < 128 ) ? isalpha( ch ) : 1 )
518 inline static bool StringEqual(
const char* p,
const char* q,
int nChar=INT_MAX ) {
523 while( *p && *q && *p == *q && n<nChar ) {
528 if ( (n == nChar) || ( *p == 0 && *q == 0 ) ) {
538 static const char*
ReadBOM(
const char* p,
bool* hasBOM );
545 static void ToStr(
int v,
char* buffer,
int bufferSize );
546 static void ToStr(
unsigned v,
char* buffer,
int bufferSize );
547 static void ToStr(
bool v,
char* buffer,
int bufferSize );
548 static void ToStr(
float v,
char* buffer,
int bufferSize );
549 static void ToStr(
double v,
char* buffer,
int bufferSize );
658 void SetValue(
const char* val,
bool staticMem=
false );
689 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->FirstChildElement( value ));
698 return const_cast<XMLNode*
>(
const_cast<const XMLNode*
>(
this)->LastChild() );
707 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->LastChildElement(value) );
723 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->PreviousSiblingElement( value ) );
739 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->NextSiblingElement( value ) );
752 return InsertEndChild( addThis );
864 friend class XMLBase;
1051 QueryIntValue( &i );
1057 QueryUnsignedValue( &i );
1063 QueryBoolValue( &b );
1069 QueryDoubleValue( &d );
1075 QueryFloatValue( &f );
1107 enum { BUF_SIZE = 200 };
1110 virtual ~XMLAttribute() {}
1112 XMLAttribute(
const XMLAttribute& );
1113 void operator=(
const XMLAttribute& );
1114 void SetName(
const char* name );
1116 char* ParseDeep(
char* p,
bool processEntities );
1118 mutable StrPair _name;
1119 mutable StrPair _value;
1120 XMLAttribute* _next;
1131 friend class XMLBase;
1140 SetValue(
str, staticMem );
1174 const char*
Attribute(
const char* name,
const char* value=0 )
const;
1183 QueryIntAttribute( name, &i );
1189 QueryUnsignedAttribute( name, &i );
1195 QueryBoolAttribute( name, &b );
1201 QueryDoubleAttribute( name, &d );
1207 QueryFloatAttribute( name, &f );
1283 return QueryIntAttribute( name, value );
1287 return QueryUnsignedAttribute( name, value );
1291 return QueryBoolAttribute( name, value );
1295 return QueryDoubleAttribute( name, value );
1299 return QueryFloatAttribute( name, value );
1340 return _rootAttribute;
1464 return _closingType;
1477 XMLAttribute* FindOrCreateAttribute(
const char* name );
1479 char* ParseAttributes(
char* p );
1481 enum { BUF_SIZE = 200 };
1561 return _processEntities;
1583 return FirstChildElement();
1586 return FirstChildElement();
1690 bool _processEntities;
1693 const char* _errorStr1;
1694 const char* _errorStr2;
1782 return XMLHandle( _node ? _node->FirstChild() : 0 );
1786 return XMLHandle( _node ? _node->FirstChildElement( value ) : 0 );
1790 return XMLHandle( _node ? _node->LastChild() : 0 );
1794 return XMLHandle( _node ? _node->LastChildElement( _value ) : 0 );
1798 return XMLHandle( _node ? _node->PreviousSibling() : 0 );
1802 return XMLHandle( _node ? _node->PreviousSiblingElement( _value ) : 0 );
1806 return XMLHandle( _node ? _node->NextSibling() : 0 );
1810 return XMLHandle( _node ? _node->NextSiblingElement( _value ) : 0 );
1819 return ( ( _node && _node->ToElement() ) ? _node->ToElement() : 0 );
1823 return ( ( _node && _node->ToText() ) ? _node->ToText() : 0 );
1827 return ( ( _node && _node->ToUnknown() ) ? _node->ToUnknown() : 0 );
1831 return ( ( _node && _node->ToDeclaration() ) ? _node->ToDeclaration() : 0 );
1865 return XMLConstHandle( _node ? _node->FirstChildElement( value ) : 0 );
1871 return XMLConstHandle( _node ? _node->LastChildElement( _value ) : 0 );
1877 return XMLConstHandle( _node ? _node->PreviousSiblingElement( _value ) : 0 );
1883 return XMLConstHandle( _node ? _node->NextSiblingElement( _value ) : 0 );
1891 return ( ( _node && _node->ToElement() ) ? _node->ToElement() : 0 );
1894 return ( ( _node && _node->ToText() ) ? _node->ToText() : 0 );
1897 return ( ( _node && _node->ToUnknown() ) ? _node->ToUnknown() : 0 );
1900 return ( ( _node && _node->ToDeclaration() ) ? _node->ToDeclaration() : 0 );
2014 return _buffer.Mem();
2022 return _buffer.Size();
2047 void PrintString(
const char*,
bool restrictedEntitySet );
2053 bool _processEntities;
2060 bool _entityFlag[ENTITY_RANGE];
2061 bool _restrictedEntityFlag[ENTITY_RANGE];
2072#if defined(_MSC_VER)
2073# pragma warning(pop)
const T & operator[](int i) const
const T & PeekTop() const
virtual int ItemSize() const =0
virtual void Free(void *)=0
virtual void SetTracked()=0
void Trace(const char *name)
virtual int ItemSize() const
virtual void Free(void *mem)
int CurrentAllocs() const
void SetStr(const char *str, int flags=0)
void SetInternedStr(const char *str)
void Set(char *start, char *end, int flags)
char * ParseName(char *in)
@ ATTRIBUTE_VALUE_LEAVE_ENTITIES
@ NEEDS_ENTITY_PROCESSING
@ NEEDS_NEWLINE_NORMALIZATION
@ TEXT_ELEMENT_LEAVE_ENTITIES
char * ParseText(char *in, const char *endTag, int strFlags)
XMLError QueryFloatValue(float *value) const
See QueryIntValue.
unsigned UnsignedValue() const
Query as an unsigned integer. See IntValue()
float FloatValue() const
Query as a float. See IntValue()
XMLError QueryDoubleValue(double *value) const
See QueryIntValue.
void SetAttribute(const char *value)
Set the attribute to a string value.
XMLError QueryUnsignedValue(unsigned int *value) const
See QueryIntValue.
double DoubleValue() const
Query as a double. See IntValue()
const char * Name() const
The name of the attribute.
XMLError QueryBoolValue(bool *value) const
See QueryIntValue.
XMLError QueryIntValue(int *value) const
bool BoolValue() const
Query as a boolean. See IntValue()
void SetAttribute(double value)
Set the attribute to value.
const XMLAttribute * Next() const
The next attribute in the list.
const char * Value() const
The value of the attribute.
void SetAttribute(bool value)
Set the attribute to value.
void SetAttribute(int value)
Set the attribute to value.
void SetAttribute(unsigned value)
Set the attribute to value.
void SetAttribute(float value)
Set the attribute to value.
XMLConstHandle(const XMLNode *node)
const XMLText * ToText() const
XMLConstHandle & operator=(const XMLConstHandle &ref)
const XMLElement * ToElement() const
XMLConstHandle(const XMLConstHandle &ref)
const XMLUnknown * ToUnknown() const
const XMLDeclaration * ToDeclaration() const
const XMLConstHandle NextSiblingElement(const char *_value=0) const
XMLConstHandle(const XMLNode &node)
const XMLConstHandle FirstChildElement(const char *value=0) const
const XMLConstHandle LastChild() const
const XMLNode * ToNode() const
const XMLConstHandle PreviousSibling() const
const XMLConstHandle PreviousSiblingElement(const char *_value=0) const
const XMLConstHandle LastChildElement(const char *_value=0) const
const XMLConstHandle NextSibling() const
const XMLConstHandle FirstChild() const
XMLDeclaration & operator=(const XMLDeclaration &)
char * ParseDeep(char *, StrPair *endTag)
virtual ~XMLDeclaration()
XMLDeclaration(const XMLDeclaration &)
virtual bool Accept(XMLVisitor *visitor) const
virtual const XMLDeclaration * ToDeclaration() const
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
virtual bool ShallowEqual(const XMLNode *compare) const
virtual XMLNode * ShallowClone(XMLDocument *document) const
XMLDeclaration(XMLDocument *doc)
XMLElement * RootElement()
XMLError Parse(const char *xml, size_t nBytes=(size_t)(-1))
void PrintError() const
If there is an error, print it to stdout.
char * Identify(char *p, XMLNode **node)
XMLError LoadFile(const char *filename)
bool Error() const
Return true if there was an error parsing the document.
XMLComment * NewComment(const char *comment)
XMLElement * NewElement(const char *name)
XMLUnknown * NewUnknown(const char *text)
const XMLElement * RootElement() const
bool ProcessEntities() const
XMLError LoadFile(FILE *)
void Clear()
Clear the document, resetting it to the initial state.
virtual bool ShallowEqual(const XMLNode *) const
XMLError SaveFile(const char *filename, bool compact=false)
Whitespace WhitespaceMode() const
void Print(XMLPrinter *streamer=0) const
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
const char * GetErrorStr1() const
Return a possibly helpful diagnostic location or string.
XMLError SaveFile(FILE *fp, bool compact=false)
virtual bool Accept(XMLVisitor *visitor) const
void DeleteNode(XMLNode *node)
virtual const XMLDocument * ToDocument() const
const char * GetErrorStr2() const
Return a possibly helpful secondary diagnostic location or string.
XMLText * NewText(const char *text)
void SetError(XMLError error, const char *str1, const char *str2)
XMLDeclaration * NewDeclaration(const char *text=0)
XMLDocument(bool processEntities=true, Whitespace=PRESERVE_WHITESPACE)
constructor
virtual XMLNode * ShallowClone(XMLDocument *) const
XMLError ErrorID() const
Return the errorID.
int QueryAttribute(const char *name, int *value) const
bool BoolAttribute(const char *name) const
See IntAttribute()
const char * GetText() const
void SetAttribute(const char *name, const char *value)
Sets the named attribute to value.
XMLError QueryBoolAttribute(const char *name, bool *value) const
See QueryIntAttribute()
XMLError QueryUnsignedText(unsigned *uval) const
See QueryIntText()
const XMLAttribute * FindAttribute(const char *name) const
Query a specific attribute in the list.
int QueryAttribute(const char *name, unsigned int *value) const
virtual XMLNode * ShallowClone(XMLDocument *document) const
void SetText(const char *inText)
void SetAttribute(const char *name, double value)
Sets the named attribute to value.
XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
See QueryIntAttribute()
unsigned UnsignedAttribute(const char *name) const
See IntAttribute()
virtual bool Accept(XMLVisitor *visitor) const
XMLError QueryBoolText(bool *bval) const
See QueryIntText()
const char * Attribute(const char *name, const char *value=0) const
int QueryAttribute(const char *name, float *value) const
const XMLAttribute * FirstAttribute() const
Return the first attribute in the list.
void SetText(float value)
Convenience method for setting text inside and element. See SetText() for important limitations.
void SetAttribute(const char *name, float value)
Sets the named attribute to value.
XMLError QueryDoubleAttribute(const char *name, double *value) const
See QueryIntAttribute()
void SetText(double value)
Convenience method for setting text inside and element. See SetText() for important limitations.
XMLError QueryDoubleText(double *dval) const
See QueryIntText()
float FloatAttribute(const char *name) const
See IntAttribute()
void SetText(unsigned value)
Convenience method for setting text inside and element. See SetText() for important limitations.
int QueryAttribute(const char *name, double *value) const
double DoubleAttribute(const char *name) const
See IntAttribute()
XMLError QueryIntAttribute(const char *name, int *value) const
XMLError QueryIntText(int *ival) const
void SetName(const char *str, bool staticMem=false)
Set the name of the element.
virtual const XMLElement * ToElement() const
int QueryAttribute(const char *name, bool *value) const
void SetAttribute(const char *name, bool value)
Sets the named attribute to value.
char * ParseDeep(char *p, StrPair *endTag)
void SetAttribute(const char *name, int value)
Sets the named attribute to value.
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
const char * Name() const
Get the name of an element (which is the Value() of the node.)
XMLError QueryFloatAttribute(const char *name, float *value) const
See QueryIntAttribute()
int IntAttribute(const char *name) const
virtual bool ShallowEqual(const XMLNode *compare) const
void SetAttribute(const char *name, unsigned value)
Sets the named attribute to value.
void SetText(bool value)
Convenience method for setting text inside and element. See SetText() for important limitations.
void SetText(int value)
Convenience method for setting text inside and element. See SetText() for important limitations.
void DeleteAttribute(const char *name)
XMLError QueryFloatText(float *fval) const
See QueryIntText()
XMLHandle PreviousSiblingElement(const char *_value=0)
Get the previous sibling element of this handle.
XMLHandle LastChildElement(const char *_value=0)
Get the last child element of this handle.
XMLHandle PreviousSibling()
Get the previous sibling of this handle.
XMLHandle NextSiblingElement(const char *_value=0)
Get the next sibling element of this handle.
XMLHandle FirstChild()
Get the first child of this handle.
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
XMLDeclaration * ToDeclaration()
Safe cast to XMLDeclaration. This can return null.
XMLHandle FirstChildElement(const char *value=0)
Get the first child element of this handle.
XMLHandle(XMLNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
XMLHandle LastChild()
Get the last child of this handle.
XMLHandle & operator=(const XMLHandle &ref)
Assignment.
XMLHandle(XMLNode &node)
Create a handle from a node.
XMLHandle NextSibling()
Get the next sibling of this handle.
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
XMLText * ToText()
Safe cast to XMLText. This can return null.
XMLUnknown * ToUnknown()
Safe cast to XMLUnknown. This can return null.
XMLHandle(const XMLHandle &ref)
Copy constructor.
const char * Value() const
virtual const XMLText * ToText() const
void SetValue(const char *val, bool staticMem=false)
virtual XMLText * ToText()
Safely cast to Text, or null.
const XMLElement * LastChildElement(const char *value=0) const
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
XMLElement * NextSiblingElement(const char *value=0)
void DeleteChild(XMLNode *node)
const XMLElement * NextSiblingElement(const char *value=0) const
Get the next (right) sibling element of this node, with an optionally supplied name.
XMLDocument * GetDocument()
Get the XMLDocument that owns this XMLNode.
const XMLNode * Parent() const
Get the parent of this node on the DOM.
const XMLElement * FirstChildElement(const char *value=0) const
XMLNode & operator=(const XMLNode &)
XMLNode * PreviousSibling()
virtual XMLComment * ToComment()
Safely cast to a Comment, or null.
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
const XMLNode * LastChild() const
Get the last child node, or null if none exists.
const XMLDocument * GetDocument() const
Get the XMLDocument that owns this XMLNode.
virtual const XMLElement * ToElement() const
virtual bool ShallowEqual(const XMLNode *compare) const =0
virtual char * ParseDeep(char *, StrPair *)
virtual bool Accept(XMLVisitor *visitor) const =0
virtual XMLNode * ShallowClone(XMLDocument *document) const =0
XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)
const XMLNode * PreviousSibling() const
Get the previous (left) sibling node of this node.
virtual const XMLDeclaration * ToDeclaration() const
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
XMLElement * PreviousSiblingElement(const char *value=0)
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
const XMLElement * PreviousSiblingElement(const char *value=0) const
Get the previous (left) sibling element of this node, with an optionally supplied name.
virtual const XMLUnknown * ToUnknown() const
const XMLNode * FirstChild() const
Get the first child node, or null if none exists.
bool NoChildren() const
Returns true if this node has no children.
XMLNode * InsertFirstChild(XMLNode *addThis)
virtual const XMLDocument * ToDocument() const
XMLNode * InsertEndChild(XMLNode *addThis)
XMLNode * LinkEndChild(XMLNode *addThis)
virtual const XMLComment * ToComment() const
XMLElement * LastChildElement(const char *value=0)
XMLElement * FirstChildElement(const char *value=0)
const XMLNode * NextSibling() const
Get the next (right) sibling node of this node.
virtual void PrintSpace(int depth)
virtual bool VisitExit(const XMLDocument &)
Visit a document.
void PushAttribute(const char *name, double value)
void PushHeader(bool writeBOM, bool writeDeclaration)
void PushText(const char *text, bool cdata=false)
Add a text node.
void PushText(float value)
Add a text node from a float.
void OpenElement(const char *name, bool compactMode=false)
virtual bool Visit(const XMLText &text)
Visit a text node.
virtual bool VisitEnter(const XMLElement &element, const XMLAttribute *attribute)
Visit an element.
void PushDeclaration(const char *value)
virtual bool CompactMode(const XMLElement &)
void PushText(int value)
Add a text node from an integer.
virtual bool Visit(const XMLComment &comment)
Visit a comment node.
void PushText(bool value)
Add a text node from a bool.
void PushAttribute(const char *name, bool value)
void PushText(unsigned value)
Add a text node from an unsigned.
void PushAttribute(const char *name, int value)
DynArray< const char *, 10 > _stack
void PushAttribute(const char *name, const char *value)
If streaming, add an attribute to an open element.
virtual bool Visit(const XMLDeclaration &declaration)
Visit a declaration.
virtual bool Visit(const XMLUnknown &unknown)
Visit an unknown node.
void PushAttribute(const char *name, unsigned value)
XMLPrinter(FILE *file=0, bool compact=false, int depth=0)
void PushText(double value)
Add a text node from a double.
void PushUnknown(const char *value)
void Print(const char *format,...)
const char * CStr() const
virtual void CloseElement(bool compactMode=false)
If streaming, close the Element.
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
virtual bool VisitExit(const XMLElement &element)
Visit an element.
void PushComment(const char *comment)
Add a comment.
virtual bool Accept(XMLVisitor *visitor) const
virtual const XMLText * ToText() const
virtual XMLText * ToText()
Safely cast to Text, or null.
XMLText & operator=(const XMLText &)
char * ParseDeep(char *, StrPair *endTag)
bool CData() const
Returns true if this is a CDATA text element.
void SetCData(bool isCData)
Declare whether this should be CDATA or standard text.
XMLText(XMLDocument *doc)
virtual bool ShallowEqual(const XMLNode *compare) const
virtual XMLNode * ShallowClone(XMLDocument *document) const
virtual bool ShallowEqual(const XMLNode *compare) const
char * ParseDeep(char *, StrPair *endTag)
virtual bool Accept(XMLVisitor *visitor) const
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
virtual XMLNode * ShallowClone(XMLDocument *document) const
XMLUnknown(XMLDocument *doc)
XMLUnknown(const XMLUnknown &)
virtual const XMLUnknown * ToUnknown() const
XMLUnknown & operator=(const XMLUnknown &)
static bool IsNameChar(unsigned char ch)
static const char * GetCharacterRef(const char *p, char *value, int *length)
static void ToStr(unsigned v, char *buffer, int bufferSize)
static const char * SkipWhiteSpace(const char *p)
static int IsUTF8Continuation(const char p)
static bool IsWhiteSpace(char p)
static bool ToUnsigned(const char *str, unsigned *value)
static void ToStr(int v, char *buffer, int bufferSize)
static void ToStr(double v, char *buffer, int bufferSize)
static void ToStr(float v, char *buffer, int bufferSize)
static char * SkipWhiteSpace(char *p)
static bool ToDouble(const char *str, double *value)
static void ConvertUTF32ToUTF8(unsigned long input, char *output, int *length)
static bool IsNameStartChar(unsigned char ch)
static bool ToFloat(const char *str, float *value)
static bool ToInt(const char *str, int *value)
static bool StringEqual(const char *p, const char *q, int nChar=INT_MAX)
static const char * ReadBOM(const char *p, bool *hasBOM)
static void ToStr(bool v, char *buffer, int bufferSize)
static bool ToBool(const char *str, bool *value)
virtual bool Visit(const XMLUnknown &)
Visit an unknown node.
virtual bool VisitExit(const XMLDocument &)
Visit a document.
virtual bool VisitExit(const XMLElement &)
Visit an element.
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
virtual bool Visit(const XMLComment &)
Visit a comment node.
virtual bool Visit(const XMLDeclaration &)
Visit a declaration.
virtual bool Visit(const XMLText &)
Visit a text node.
virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
Visit an element.
@ XML_ERROR_MISMATCHED_ELEMENT
@ XML_ERROR_EMPTY_DOCUMENT
@ XML_ERROR_ELEMENT_MISMATCH
@ XML_ERROR_PARSING_ATTRIBUTE
@ XML_ERROR_FILE_NOT_FOUND
@ XML_ERROR_IDENTIFYING_TAG
@ XML_ERROR_PARSING_COMMENT
@ XML_ERROR_FILE_READ_ERROR
@ XML_ERROR_PARSING_UNKNOWN
@ XML_ERROR_PARSING_CDATA
@ XML_ERROR_PARSING_DECLARATION
@ XML_WRONG_ATTRIBUTE_TYPE
@ XML_ERROR_PARSING_ELEMENT
@ XML_ERROR_FILE_COULD_NOT_BE_OPENED
@ XML_CAN_NOT_CONVERT_TEXT
STBI_EXTERN unsigned long const char * str
STBI_EXTERN unsigned long flags
int TIXML_SNPRINTF(char *buffer, size_t size, const char *format,...)