24 #ifndef TINYXML2_INCLUDED 25 #define TINYXML2_INCLUDED 27 #if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__) 56 #if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__) 63 # pragma warning(push) 64 # pragma warning(disable: 4251) 68 # ifdef TINYXML2_EXPORT 69 # define TINYXML2_LIB __declspec(dllexport) 70 # elif defined(TINYXML2_IMPORT) 71 # define TINYXML2_LIB __declspec(dllimport) 81 # if defined(_MSC_VER) 82 # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like 83 # define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); } 84 # elif defined (ANDROID_NDK) 85 # include <android/log.h> 86 # define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } 89 # define TIXMLASSERT assert 92 # define TIXMLASSERT( x ) {} 141 void Set(
char* start,
char* end,
int flags ) {
156 _start =
const_cast<char*
>(str);
159 void SetStr(
const char* str,
int flags=0 );
161 char*
ParseText(
char* in,
const char* endTag,
int strFlags );
189 template <
class T,
int INITIAL_SIZE>
195 _allocated = INITIAL_SIZE;
200 if ( _mem != _pool ) {
211 EnsureCapacity( _size+1 );
218 EnsureCapacity( _size+count );
219 T* ret = &_mem[_size];
226 return _mem[--_size];
250 return _mem[ _size - 1];
279 if ( cap > _allocated ) {
281 int newAllocated = cap * 2;
282 T* newMem =
new T[newAllocated];
283 memcpy( newMem, _mem,
sizeof(T)*_size );
284 if ( _mem != _pool ) {
288 _allocated = newAllocated;
293 T _pool[INITIAL_SIZE];
309 virtual int ItemSize()
const = 0;
310 virtual void* Alloc() = 0;
311 virtual void Free(
void* ) = 0;
312 virtual void SetTracked() = 0;
313 virtual void Clear() = 0;
324 MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
331 while( !_blockPtrs.Empty()) {
332 Block* b = _blockPtrs.Pop();
346 return _currentAllocs;
352 Block* block =
new Block();
353 _blockPtrs.Push( block );
355 for(
int i=0; i<COUNT-1; ++i ) {
356 block->chunk[i].next = &block->chunk[i+1];
358 block->chunk[COUNT-1].next = 0;
359 _root = block->chunk;
361 void* result = _root;
365 if ( _currentAllocs > _maxAllocs ) {
366 _maxAllocs = _currentAllocs;
373 virtual void Free(
void* mem ) {
378 Chunk* chunk =
static_cast<Chunk*
>( mem );
380 memset( chunk, 0xfe,
sizeof(Chunk) );
386 printf(
"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
387 name, _maxAllocs, _maxAllocs*SIZE/1024, _currentAllocs, SIZE, _nAllocs, _blockPtrs.Size() );
407 enum { COUNT = (4*1024)/SIZE };
526 while( IsWhiteSpace(*p) ) {
533 return const_cast<char*
>( SkipWhiteSpace( const_cast<const char*>(p) ) );
539 return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );
547 if ( isalpha( ch ) ) {
550 return ch ==
':' || ch ==
'_';
554 return IsNameStartChar( ch )
560 inline static bool StringEqual(
const char* p,
const char* q,
int nChar=INT_MAX ) {
564 return strncmp( p, q, nChar ) == 0;
568 return ( p & 0x80 ) != 0;
571 static const char* ReadBOM(
const char* p,
bool* hasBOM );
574 static const char* GetCharacterRef(
const char* p,
char* value,
int* length );
575 static void ConvertUTF32ToUTF8(
unsigned long input,
char* output,
int* length );
578 static void ToStr(
int v,
char* buffer,
int bufferSize );
579 static void ToStr(
unsigned v,
char* buffer,
int bufferSize );
580 static void ToStr(
bool v,
char* buffer,
int bufferSize );
581 static void ToStr(
float v,
char* buffer,
int bufferSize );
582 static void ToStr(
double v,
char* buffer,
int bufferSize );
583 static void ToStr(int64_t v,
char* buffer,
int bufferSize);
586 static bool ToInt(
const char* str,
int* value );
587 static bool ToUnsigned(
const char* str,
unsigned* value );
588 static bool ToBool(
const char* str,
bool* value );
589 static bool ToFloat(
const char* str,
float* value );
590 static bool ToDouble(
const char* str,
double* value );
591 static bool ToInt64(
const char* str, int64_t* value);
690 const char* Value()
const;
695 void SetValue(
const char* val,
bool staticMem=
false );
723 const XMLElement* FirstChildElement(
const char* name = 0 )
const;
726 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->FirstChildElement( name ));
741 const XMLElement* LastChildElement(
const char* name = 0 )
const;
744 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->LastChildElement(name) );
757 const XMLElement* PreviousSiblingElement(
const char* name = 0 )
const ;
760 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->PreviousSiblingElement( name ) );
773 const XMLElement* NextSiblingElement(
const char* name = 0 )
const;
776 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->NextSiblingElement( name ) );
789 return InsertEndChild( addThis );
812 void DeleteChildren();
817 void DeleteChild(
XMLNode* node );
836 virtual bool ShallowEqual(
const XMLNode* compare )
const = 0;
860 virtual bool Accept(
XMLVisitor* visitor )
const = 0;
880 virtual char* ParseDeep(
char*,
StrPair* );
897 static void DeleteNode(
XMLNode* node );
898 void InsertChildPreamble(
XMLNode* insertThis )
const;
921 virtual bool Accept(
XMLVisitor* visitor )
const;
940 virtual bool ShallowEqual(
const XMLNode* compare )
const;
946 char* ParseDeep(
char*,
StrPair* endTag );
968 virtual bool Accept(
XMLVisitor* visitor )
const;
971 virtual bool ShallowEqual(
const XMLNode* compare )
const;
977 char* ParseDeep(
char*,
StrPair* endTag );
1007 virtual bool Accept(
XMLVisitor* visitor )
const;
1010 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1016 char* ParseDeep(
char*,
StrPair* endTag );
1042 virtual bool Accept(
XMLVisitor* visitor )
const;
1045 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1051 char* ParseDeep(
char*,
StrPair* endTag );
1071 const char* Name()
const;
1074 const char* Value()
const;
1093 QueryInt64Value(&i);
1100 QueryUnsignedValue( &i );
1106 QueryBoolValue( &b );
1112 QueryDoubleValue( &d );
1118 QueryFloatValue( &f );
1126 XMLError QueryIntValue(
int* value )
const;
1128 XMLError QueryUnsignedValue(
unsigned int* value )
const;
1130 XMLError QueryInt64Value(int64_t* value)
const;
1132 XMLError QueryBoolValue(
bool* value )
const;
1134 XMLError QueryDoubleValue(
double* value )
const;
1136 XMLError QueryFloatValue(
float* value )
const;
1139 void SetAttribute(
const char* value );
1141 void SetAttribute(
int value );
1143 void SetAttribute(
unsigned value );
1145 void SetAttribute(int64_t value);
1147 void SetAttribute(
bool value );
1149 void SetAttribute(
double value );
1151 void SetAttribute(
float value );
1154 enum { BUF_SIZE = 200 };
1161 void SetName(
const char* name );
1163 char* ParseDeep(
char* p,
bool processEntities );
1185 void SetName(
const char* str,
bool staticMem=
false ) {
1186 SetValue( str, staticMem );
1195 virtual bool Accept(
XMLVisitor* visitor )
const;
1220 const char* Attribute(
const char* name,
const char* value=0 )
const;
1229 QueryIntAttribute( name, &i );
1236 QueryUnsignedAttribute( name, &i );
1243 QueryInt64Attribute(name, &i);
1250 QueryBoolAttribute( name, &b );
1256 QueryDoubleAttribute( name, &d );
1262 QueryFloatAttribute( name, &f );
1349 return QueryIntAttribute( name, value );
1353 return QueryUnsignedAttribute( name, value );
1357 return QueryInt64Attribute(name, value);
1361 return QueryBoolAttribute( name, value );
1365 return QueryDoubleAttribute( name, value );
1369 return QueryFloatAttribute( name, value );
1413 void DeleteAttribute(
const char* name );
1417 return _rootAttribute;
1420 const XMLAttribute* FindAttribute(
const char* name )
const;
1450 const char* GetText()
const;
1486 void SetText(
const char* inText );
1488 void SetText(
int value );
1490 void SetText(
unsigned value );
1492 void SetText(int64_t value);
1494 void SetText(
bool value );
1496 void SetText(
double value );
1498 void SetText(
float value );
1526 XMLError QueryIntText(
int* ival )
const;
1528 XMLError QueryUnsignedText(
unsigned* uval )
const;
1530 XMLError QueryInt64Text(int64_t* uval)
const;
1532 XMLError QueryBoolText(
bool* bval )
const;
1534 XMLError QueryDoubleText(
double* dval )
const;
1536 XMLError QueryFloatText(
float* fval )
const;
1545 return _closingType;
1548 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1551 char* ParseDeep(
char* p,
StrPair* endTag );
1562 XMLAttribute* FindOrCreateAttribute(
const char* name );
1564 char* ParseAttributes(
char* p );
1565 static void DeleteAttribute(
XMLAttribute* attribute );
1567 enum { BUF_SIZE = 200 };
1614 XMLError Parse(
const char* xml,
size_t nBytes=SIZE_MAX );
1621 XMLError LoadFile(
const char* filename );
1641 XMLError SaveFile(
const char* filename,
bool compact =
false );
1650 XMLError SaveFile( FILE* fp,
bool compact =
false );
1653 return _processEntities;
1675 return FirstChildElement();
1678 return FirstChildElement();
1696 virtual bool Accept(
XMLVisitor* visitor )
const;
1709 XMLComment* NewComment(
const char* comment );
1715 XMLText* NewText(
const char* text );
1739 void DeleteNode(
XMLNode* node );
1741 void SetError(
XMLError error,
const char* str1,
const char* str2 );
1751 const char* ErrorName()
const;
1762 void PrintError()
const;
1768 char* Identify(
char* p,
XMLNode** node );
1878 return XMLHandle( _node ? _node->FirstChild() : 0 );
1882 return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
1886 return XMLHandle( _node ? _node->LastChild() : 0 );
1890 return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
1894 return XMLHandle( _node ? _node->PreviousSibling() : 0 );
1898 return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
1902 return XMLHandle( _node ? _node->NextSibling() : 0 );
1906 return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
1915 return ( ( _node == 0 ) ? 0 : _node->ToElement() );
1919 return ( ( _node == 0 ) ? 0 : _node->ToText() );
1923 return ( ( _node == 0 ) ? 0 : _node->ToUnknown() );
1927 return ( ( _node == 0 ) ? 0 : _node->ToDeclaration() );
1961 return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
1967 return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
1973 return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
1979 return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
1987 return ( ( _node == 0 ) ? 0 : _node->ToElement() );
1990 return ( ( _node == 0 ) ? 0 : _node->ToText() );
1993 return ( ( _node == 0 ) ? 0 : _node->ToUnknown() );
1996 return ( ( _node == 0 ) ? 0 : _node->ToDeclaration() );
2055 XMLPrinter( FILE* file=0,
bool compact =
false,
int depth = 0 );
2059 void PushHeader(
bool writeBOM,
bool writeDeclaration );
2063 void OpenElement(
const char* name,
bool compactMode=
false );
2065 void PushAttribute(
const char* name,
const char* value );
2066 void PushAttribute(
const char* name,
int value );
2067 void PushAttribute(
const char* name,
unsigned value );
2068 void PushAttribute(
const char* name, int64_t value);
2069 void PushAttribute(
const char* name,
bool value );
2070 void PushAttribute(
const char* name,
double value );
2072 virtual void CloseElement(
bool compactMode=
false );
2075 void PushText(
const char* text,
bool cdata=
false );
2077 void PushText(
int value );
2079 void PushText(
unsigned value );
2081 void PushText(int64_t value);
2083 void PushText(
bool value );
2085 void PushText(
float value );
2087 void PushText(
double value );
2090 void PushComment(
const char* comment );
2092 void PushDeclaration(
const char* value );
2093 void PushUnknown(
const char* value );
2101 virtual bool VisitExit(
const XMLElement& element );
2103 virtual bool Visit(
const XMLText& text );
2104 virtual bool Visit(
const XMLComment& comment );
2106 virtual bool Visit(
const XMLUnknown& unknown );
2113 return _buffer.Mem();
2121 return _buffer.Size();
2138 virtual void PrintSpace(
int depth );
2139 void Print(
const char* format, ... );
2141 void SealElementIfJustOpened();
2146 void PrintString(
const char*,
bool restrictedEntitySet );
2159 bool _entityFlag[ENTITY_RANGE];
2160 bool _restrictedEntityFlag[ENTITY_RANGE];
2169 #if defined(_MSC_VER) 2170 # pragma warning(pop) 2173 #endif // TINYXML2_INCLUDED FILE * _fp
Definition: tinyxml2.h:2149
XMLHandle PreviousSibling()
Get the previous sibling of this handle.
Definition: tinyxml2.h:1893
void Push(T t)
Definition: tinyxml2.h:209
T * _mem
Definition: tinyxml2.h:292
void SetAttribute(const char *name, int64_t value)
Sets the named attribute to value.
Definition: tinyxml2.h:1389
char * _charBuffer
Definition: tinyxml2.h:1787
const XMLNode * PreviousSibling() const
Get the previous (left) sibling node of this node.
Definition: tinyxml2.h:748
Definition: tinyxml2.h:450
const XMLNode * FirstChild() const
Get the first child node, or null if none exists.
Definition: tinyxml2.h:712
int _nAllocs
Definition: tinyxml2.h:424
XMLNode * _prev
Definition: tinyxml2.h:889
int _currentAllocs
Definition: tinyxml2.h:423
StrPair()
Definition: tinyxml2.h:138
XMLHandle(XMLNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition: tinyxml2.h:1859
T * PushArr(int count)
Definition: tinyxml2.h:215
Definition: tinyxml2.h:171
XMLError QueryUnsignedValue(unsigned int *value) const
See QueryIntValue.
StrPair _name
Definition: tinyxml2.h:1165
const XMLNode * NextSibling() const
Get the next (right) sibling node of this node.
Definition: tinyxml2.h:764
static const int TIXML2_PATCH_VERSION
Definition: tinyxml2.h:101
virtual bool ShallowEqual(const XMLNode *) const
Definition: tinyxml2.h:1773
XMLHandle LastChildElement(const char *name=0)
Get the last child element of this handle.
Definition: tinyxml2.h:1889
virtual const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:674
XMLAttribute * _rootAttribute
Definition: tinyxml2.h:1572
void SetCData(bool isCData)
Declare whether this should be CDATA or standard text.
Definition: tinyxml2.h:931
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition: tinyxml2.h:923
Definition: tinyxml2.h:514
virtual void * Alloc()
Definition: tinyxml2.h:349
virtual bool Visit(const XMLComment &)
Visit a comment node.
Definition: tinyxml2.h:482
Definition: tinyxml2.h:511
void TransferTo(StrPair *other)
int64_t Int64Attribute(const char *name) const
See IntAttribute()
Definition: tinyxml2.h:1241
int _maxAllocs
Definition: tinyxml2.h:425
const XMLText * ToText() const
Definition: tinyxml2.h:1989
XMLElement * LastChildElement(const char *name=0)
Definition: tinyxml2.h:743
Definition: tinyxml2.h:1176
Whitespace _whitespace
Definition: tinyxml2.h:1784
XMLNode * Parent()
Definition: tinyxml2.h:702
XMLUnknown * ToUnknown()
Safe cast to XMLUnknown. This can return null.
Definition: tinyxml2.h:1922
void SetAttribute(const char *name, unsigned value)
Sets the named attribute to value.
Definition: tinyxml2.h:1383
Definition: tinyxml2.h:1577
XMLNode * LinkEndChild(XMLNode *addThis)
Definition: tinyxml2.h:788
XMLConstHandle & operator=(const XMLConstHandle &ref)
Definition: tinyxml2.h:1952
void SetAttribute(const char *name, float value)
Sets the named attribute to value.
Definition: tinyxml2.h:1405
int QueryAttribute(const char *name, float *value) const
Definition: tinyxml2.h:1368
XMLHandle NextSiblingElement(const char *name=0)
Get the next sibling element of this handle.
Definition: tinyxml2.h:1905
Definition: tinyxml2.h:1031
void SetStr(const char *str, int flags=0)
bool Error() const
Return true if there was an error parsing the document.
Definition: tinyxml2.h:1744
virtual ~XMLVisitor()
Definition: tinyxml2.h:453
Definition: tinyxml2.h:128
Chunk * _root
Definition: tinyxml2.h:421
Definition: tinyxml2.h:134
void SetName(const char *str, bool staticMem=false)
Set the name of the element.
Definition: tinyxml2.h:1185
Definition: tinyxml2.h:494
bool _writeBOM
Definition: tinyxml2.h:1781
T Pop()
Definition: tinyxml2.h:224
static const char * SkipWhiteSpace(const char *p)
Definition: tinyxml2.h:524
XMLHandle FirstChild()
Get the first child of this handle.
Definition: tinyxml2.h:1877
void SetAttribute(const char *name, bool value)
Sets the named attribute to value.
Definition: tinyxml2.h:1395
int QueryAttribute(const char *name, int *value) const
Definition: tinyxml2.h:1348
void SetAttribute(const char *value)
Set the attribute to a string value.
static bool IsUTF8Continuation(char p)
Definition: tinyxml2.h:567
Definition: tinyxml2.h:509
const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:1992
virtual const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:1038
bool CData() const
Returns true if this is a CDATA text element.
Definition: tinyxml2.h:935
MemPoolT< sizeof(XMLText) > _textPool
Definition: tinyxml2.h:1791
XMLText(XMLDocument *doc)
Definition: tinyxml2.h:943
const XMLAttribute * Next() const
The next attribute in the list.
Definition: tinyxml2.h:1077
void operator=(StrPair &other)
XMLDocument * _document
Definition: tinyxml2.h:882
char * ParseName(char *in)
void Trace(const char *name)
Definition: tinyxml2.h:385
XMLDocument * GetDocument()
Get the XMLDocument that owns this XMLNode.
Definition: tinyxml2.h:632
Definition: tinyxml2.h:1855
Definition: tinyxml2.h:303
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:2096
Definition: tinyxml2.h:132
bool NoChildren() const
Returns true if this node has no children.
Definition: tinyxml2.h:707
XMLElement * FirstChildElement(const char *name=0)
Definition: tinyxml2.h:725
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition: tinyxml2.h:650
bool _compactMode
Definition: tinyxml2.h:2153
XMLNode * _node
Definition: tinyxml2.h:1931
XMLHandle PreviousSiblingElement(const char *name=0)
Get the previous sibling element of this handle.
Definition: tinyxml2.h:1897
XMLAttribute()
Definition: tinyxml2.h:1156
const XMLConstHandle PreviousSibling() const
Definition: tinyxml2.h:1969
Definition: tinyxml2.h:505
unsigned UnsignedValue() const
Query as an unsigned integer. See IntValue()
Definition: tinyxml2.h:1098
const XMLConstHandle LastChild() const
Definition: tinyxml2.h:1963
bool HasBOM() const
Definition: tinyxml2.h:1662
T & operator[](int i)
Definition: tinyxml2.h:238
Definition: tinyxml2.h:498
void SetUserData(void *userData)
Definition: tinyxml2.h:867
const XMLNode * _node
Definition: tinyxml2.h:2000
virtual void Free(void *mem)
Definition: tinyxml2.h:373
XMLError QueryBoolAttribute(const char *name, bool *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1306
StrPair _value
Definition: tinyxml2.h:1166
Definition: tinyxml2.h:508
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2162
virtual const XMLElement * ToElement() const
Definition: tinyxml2.h:1192
const XMLAttribute * FirstAttribute() const
Return the first attribute in the list.
Definition: tinyxml2.h:1416
XMLError QueryDoubleAttribute(const char *name, double *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1314
void SetAttribute(const char *name, const char *value)
Sets the named attribute to value.
Definition: tinyxml2.h:1373
virtual const XMLElement * ToElement() const
Definition: tinyxml2.h:662
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
XMLError QueryFloatAttribute(const char *name, float *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1322
Definition: tinyxml2.h:620
virtual const XMLComment * ToComment() const
Definition: tinyxml2.h:668
Definition: tinyxml2.h:127
Definition: tinyxml2.h:502
MemPoolT< sizeof(XMLComment) > _commentPool
Definition: tinyxml2.h:1792
static const int TIXML2_MINOR_VERSION
Definition: tinyxml2.h:100
virtual bool Visit(const XMLDeclaration &)
Visit a declaration.
Definition: tinyxml2.h:474
int Untracked() const
Definition: tinyxml2.h:394
Definition: tinyxml2.h:499
double DoubleAttribute(const char *name) const
See IntAttribute()
Definition: tinyxml2.h:1254
const char * _errorStr2
Definition: tinyxml2.h:1786
DynArray()
Definition: tinyxml2.h:193
void SetBOM(bool useBOM)
Definition: tinyxml2.h:1667
Definition: tinyxml2.h:135
void SetInternedStr(const char *str)
Definition: tinyxml2.h:154
char * _end
Definition: tinyxml2.h:177
XMLAttribute * _next
Definition: tinyxml2.h:1167
virtual XMLComment * ToComment()
Safely cast to a Comment, or null.
Definition: tinyxml2.h:646
void SetTracked()
Definition: tinyxml2.h:390
bool ProcessEntities() const
Definition: tinyxml2.h:1652
virtual const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:677
float FloatAttribute(const char *name) const
See IntAttribute()
Definition: tinyxml2.h:1260
Definition: tinyxml2.h:172
Definition: tinyxml2.h:1540
Definition: tinyxml2.h:130
Definition: tinyxml2.h:500
const XMLNode * LastChild() const
Get the last child node, or null if none exists.
Definition: tinyxml2.h:730
MemPool * _memPool
Definition: tinyxml2.h:1168
Definition: tinyxml2.h:126
bool _firstElement
Definition: tinyxml2.h:2148
XMLError QueryDoubleValue(double *value) const
See QueryIntValue.
unsigned UnsignedAttribute(const char *name) const
See IntAttribute()
Definition: tinyxml2.h:1234
static bool StringEqual(const char *p, const char *q, int nChar=INT_MAX)
Definition: tinyxml2.h:560
double DoubleValue() const
Query as a double. See IntValue()
Definition: tinyxml2.h:1110
char * ParseText(char *in, const char *endTag, int strFlags)
Definition: tinyxml2.h:190
virtual bool Visit(const XMLText &)
Visit a text node.
Definition: tinyxml2.h:478
void Clear()
Definition: tinyxml2.h:205
int QueryAttribute(const char *name, bool *value) const
Definition: tinyxml2.h:1360
Definition: tinyxml2.h:417
Definition: tinyxml2.h:1541
const XMLConstHandle FirstChildElement(const char *name=0) const
Definition: tinyxml2.h:1960
const char * _errorStr1
Definition: tinyxml2.h:1785
const T & operator[](int i) const
Definition: tinyxml2.h:243
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition: tinyxml2.h:1035
Definition: tinyxml2.h:493
Definition: tinyxml2.h:503
~DynArray()
Definition: tinyxml2.h:199
virtual const XMLDocument * ToDocument() const
Definition: tinyxml2.h:671
const XMLNode * ToNode() const
Definition: tinyxml2.h:1983
XMLError _errorID
Definition: tinyxml2.h:1783
static const int TIXML2_MAJOR_VERSION
Definition: tinyxml2.h:99
const XMLElement * ToElement() const
Definition: tinyxml2.h:1986
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition: tinyxml2.h:658
virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
Visit an element.
Definition: tinyxml2.h:465
virtual ~MemPool()
Definition: tinyxml2.h:307
virtual ~XMLPrinter()
Definition: tinyxml2.h:2056
virtual int ItemSize() const
Definition: tinyxml2.h:342
virtual const XMLText * ToText() const
Definition: tinyxml2.h:665
XMLNode * _parent
Definition: tinyxml2.h:883
const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:1995
XMLHandle NextSibling()
Get the next sibling of this handle.
Definition: tinyxml2.h:1901
bool _isCData
Definition: tinyxml2.h:949
const XMLConstHandle NextSibling() const
Definition: tinyxml2.h:1975
int CurrentAllocs() const
Definition: tinyxml2.h:345
bool BoolAttribute(const char *name) const
See IntAttribute()
Definition: tinyxml2.h:1248
#define TINYXML2_LIB
Definition: tinyxml2.h:76
void SetAttribute(const char *name, int value)
Sets the named attribute to value.
Definition: tinyxml2.h:1378
void Set(char *start, char *end, int flags)
Definition: tinyxml2.h:141
XMLNode * PreviousSibling()
Definition: tinyxml2.h:752
XMLError QueryBoolValue(bool *value) const
See QueryIntValue.
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition: tinyxml2.h:1000
Definition: tinyxml2.h:497
const char * Name() const
Get the name of an element (which is the Value() of the node.)
Definition: tinyxml2.h:1181
Definition: tinyxml2.h:917
int IntValue() const
Definition: tinyxml2.h:1085
bool _processEntities
Definition: tinyxml2.h:1782
int _closingType
Definition: tinyxml2.h:1568
Definition: tinyxml2.h:1066
void ClearBuffer()
Definition: tinyxml2.h:2127
int ClosingType() const
Definition: tinyxml2.h:1544
Definition: tinyxml2.h:495
MemPoolT< sizeof(XMLAttribute) > _attributePool
Definition: tinyxml2.h:1790
XMLElement * RootElement()
Definition: tinyxml2.h:1674
XMLNode * LastChild()
Definition: tinyxml2.h:734
void Clear()
Definition: tinyxml2.h:329
const T * Mem() const
Definition: tinyxml2.h:263
virtual const XMLText * ToText() const
Definition: tinyxml2.h:926
Definition: tinyxml2.h:413
StrPair _value
Definition: tinyxml2.h:884
void PopArr(int count)
Definition: tinyxml2.h:229
int64_t Int64Value() const
Definition: tinyxml2.h:1091
int QueryAttribute(const char *name, double *value) const
Definition: tinyxml2.h:1364
XMLHandle FirstChildElement(const char *name=0)
Get the first child element of this handle.
Definition: tinyxml2.h:1881
int _nUntracked
Definition: tinyxml2.h:426
XMLElement * NextSiblingElement(const char *name=0)
Definition: tinyxml2.h:775
XMLText * ToText()
Safe cast to XMLText. This can return null.
Definition: tinyxml2.h:1918
Definition: tinyxml2.h:321
const XMLDocument * GetDocument() const
Get the XMLDocument that owns this XMLNode.
Definition: tinyxml2.h:627
Definition: tinyxml2.h:122
Chunk * next
Definition: tinyxml2.h:414
T * Mem()
Definition: tinyxml2.h:268
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition: tinyxml2.h:638
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:456
char * _start
Definition: tinyxml2.h:176
bool _processEntities
Definition: tinyxml2.h:2152
static bool IsNameStartChar(unsigned char ch)
Definition: tinyxml2.h:542
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition: tinyxml2.h:642
int IntAttribute(const char *name) const
Definition: tinyxml2.h:1227
XMLElement * PreviousSiblingElement(const char *name=0)
Definition: tinyxml2.h:759
float FloatValue() const
Query as a float. See IntValue()
Definition: tinyxml2.h:1116
virtual bool CompactMode(const XMLElement &)
Definition: tinyxml2.h:2133
XMLNode * _lastChild
Definition: tinyxml2.h:887
XMLNode * FirstChild()
Definition: tinyxml2.h:716
int CStrSize() const
Definition: tinyxml2.h:2120
bool Empty() const
Definition: tinyxml2.h:234
Definition: tinyxml2.h:1587
virtual ~XMLAttribute()
Definition: tinyxml2.h:1157
const XMLConstHandle NextSiblingElement(const char *name=0) const
Definition: tinyxml2.h:1978
virtual const XMLDocument * ToDocument() const
Definition: tinyxml2.h:1599
static char * SkipWhiteSpace(char *p)
Definition: tinyxml2.h:532
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
Definition: tinyxml2.h:1914
XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1288
Definition: tinyxml2.h:1939
int Capacity() const
Definition: tinyxml2.h:258
Definition: tinyxml2.h:521
XMLError ErrorID() const
Return the errorID.
Definition: tinyxml2.h:1748
Definition: tinyxml2.h:1578
XMLHandle LastChild()
Get the last child of this handle.
Definition: tinyxml2.h:1885
DynArray< Block *, 10 > _blockPtrs
Definition: tinyxml2.h:420
int Size() const
Definition: tinyxml2.h:253
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:460
XMLError QueryIntValue(int *value) const
const T & PeekTop() const
Definition: tinyxml2.h:248
XMLError QueryInt64Value(int64_t *value) const
See QueryIntValue.
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition: tinyxml2.h:654
#define TIXMLASSERT(x)
Definition: tinyxml2.h:92
Definition: tinyxml2.h:131
int QueryAttribute(const char *name, unsigned int *value) const
Definition: tinyxml2.h:1352
const XMLElement * RootElement() const
Definition: tinyxml2.h:1677
int QueryAttribute(const char *name, int64_t *value) const
Definition: tinyxml2.h:1356
const XMLConstHandle LastChildElement(const char *name=0) const
Definition: tinyxml2.h:1966
Whitespace WhitespaceMode() const
Definition: tinyxml2.h:1655
int _allocated
Definition: tinyxml2.h:294
DynArray< const char *, 10 > _stack
Definition: tinyxml2.h:2143
virtual bool Visit(const XMLUnknown &)
Visit an unknown node.
Definition: tinyxml2.h:486
void CollapseWhitespace()
XMLNode * _firstChild
Definition: tinyxml2.h:886
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
Definition: tinyxml2.h:1910
XMLError QueryIntAttribute(const char *name, int *value) const
Definition: tinyxml2.h:1279
static bool IsNameChar(unsigned char ch)
Definition: tinyxml2.h:553
XMLConstHandle(const XMLNode &node)
Definition: tinyxml2.h:1945
Definition: tinyxml2.h:496
MemPool()
Definition: tinyxml2.h:306
Definition: tinyxml2.h:996
MemPoolT< sizeof(XMLElement) > _elementPool
Definition: tinyxml2.h:1789
bool BoolValue() const
Query as a boolean. See IntValue()
Definition: tinyxml2.h:1104
virtual XMLNode * ShallowClone(XMLDocument *) const
Definition: tinyxml2.h:1770
Definition: tinyxml2.h:506
static bool IsWhiteSpace(char p)
Definition: tinyxml2.h:538
const XMLNode * Parent() const
Get the parent of this node on the DOM.
Definition: tinyxml2.h:698
XMLNode * _next
Definition: tinyxml2.h:890
bool Empty() const
Definition: tinyxml2.h:150
XMLError
Definition: tinyxml2.h:492
XMLDeclaration * ToDeclaration()
Safe cast to XMLDeclaration. This can return null.
Definition: tinyxml2.h:1926
void SetAttribute(const char *name, double value)
Sets the named attribute to value.
Definition: tinyxml2.h:1400
XMLConstHandle(const XMLConstHandle &ref)
Definition: tinyxml2.h:1948
MemPool * _memPool
Definition: tinyxml2.h:895
const char * GetErrorStr1() const
Return a possibly helpful diagnostic location or string.
Definition: tinyxml2.h:1754
MemPoolT()
Definition: tinyxml2.h:324
Definition: tinyxml2.h:2046
XMLHandle & operator=(const XMLHandle &ref)
Assignment.
Definition: tinyxml2.h:1871
Definition: tinyxml2.h:512
int _textDepth
Definition: tinyxml2.h:2151
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition: tinyxml2.h:1595
virtual const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:1003
bool _elementJustOpened
Definition: tinyxml2.h:2142
const char * CStr() const
Definition: tinyxml2.h:2112
virtual bool VisitExit(const XMLElement &)
Visit an element.
Definition: tinyxml2.h:469
virtual ~XMLText()
Definition: tinyxml2.h:944
Definition: tinyxml2.h:504
Definition: tinyxml2.h:507
int _depth
Definition: tinyxml2.h:2150
void * _userData
Definition: tinyxml2.h:892
XMLNode * NextSibling()
Definition: tinyxml2.h:768
const XMLConstHandle PreviousSiblingElement(const char *name=0) const
Definition: tinyxml2.h:1972
Definition: tinyxml2.h:510
XMLError QueryFloatValue(float *value) const
See QueryIntValue.
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition: tinyxml2.h:1189
Definition: tinyxml2.h:501
XMLAttribute * FindAttribute(const char *name)
Definition: tinyxml2.h:1559
XMLHandle(XMLNode &node)
Create a handle from a node.
Definition: tinyxml2.h:1863
Whitespace
Definition: tinyxml2.h:1576
int _size
Definition: tinyxml2.h:295
XMLHandle(const XMLHandle &ref)
Copy constructor.
Definition: tinyxml2.h:1867
XMLConstHandle(const XMLNode *node)
Definition: tinyxml2.h:1942
const char * GetErrorStr2() const
Return a possibly helpful secondary diagnostic location or string.
Definition: tinyxml2.h:1758
XMLError QueryInt64Attribute(const char *name, int64_t *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1297
~MemPoolT()
Definition: tinyxml2.h:325
int _flags
Definition: tinyxml2.h:175
Definition: tinyxml2.h:133
const XMLConstHandle FirstChild() const
Definition: tinyxml2.h:1957
void * GetUserData() const
Definition: tinyxml2.h:874
void EnsureCapacity(int cap)
Definition: tinyxml2.h:277