 |
MeLOn
|
Go to the documentation of this file.
24 #ifndef TINYXML2_INCLUDED
25 #define TINYXML2_INCLUDED
27 #if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
56 #if defined( _DEBUG ) || defined (__DEBUG__)
57 # ifndef TINYXML2_DEBUG
58 # define TINYXML2_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)
76 # define TINYXML2_LIB __attribute__((visibility("default")))
82 #if defined(TINYXML2_DEBUG)
83 # if defined(_MSC_VER)
84 # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
85 # define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); }
86 # elif defined (ANDROID_NDK)
87 # include <android/log.h>
88 # define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
91 # define TIXMLASSERT assert
94 # define TIXMLASSERT( x ) {}
101 static const int TIXML2_MAJOR_VERSION = 7;
102 static const int TIXML2_MINOR_VERSION = 1;
103 static const int TIXML2_PATCH_VERSION = 0;
105 #define TINYXML2_MAJOR_VERSION 7
106 #define TINYXML2_MINOR_VERSION 1
107 #define TINYXML2_PATCH_VERSION 0
114 static const int TINYXML2_MAX_ELEMENT_DEPTH = 100;
139 NEEDS_ENTITY_PROCESSING = 0x01,
140 NEEDS_NEWLINE_NORMALIZATION = 0x02,
141 NEEDS_WHITESPACE_COLLAPSING = 0x04,
143 TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
144 TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
146 ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
147 ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
148 COMMENT = NEEDS_NEWLINE_NORMALIZATION
151 StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
154 void Set(
char* start,
char* end,
int flags ) {
160 _flags = flags | NEEDS_FLUSH;
163 const char* GetStr();
166 return _start == _end;
171 _start =
const_cast<char*
>(str);
174 void SetStr(
const char* str,
int flags=0 );
176 char* ParseText(
char* in,
const char* endTag,
int strFlags,
int* curLineNumPtr );
177 char* ParseName(
char* in );
179 void TransferTo(
StrPair* other );
183 void CollapseWhitespace();
204 template <
class T,
int INITIAL_SIZE>
306 const int newAllocated = cap * 2;
307 T* newMem =
new T[newAllocated];
337 virtual void Free(
void* ) = 0;
345 template<
int ITEM_SIZE >
377 Block* block =
new Block();
380 Item* blockItems = block->items;
382 blockItems[i].next = &(blockItems[i + 1]);
387 Item*
const result =
_root;
400 virtual void Free(
void* mem ) {
405 Item* item =
static_cast<Item*
>( mem );
406 #ifdef TINYXML2_DEBUG
407 memset( item, 0xfe,
sizeof( *item ) );
413 printf(
"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
556 while( IsWhiteSpace(*p) ) {
557 if (curLineNumPtr && *p ==
'\n') {
566 return const_cast<char*
>( SkipWhiteSpace(
const_cast<const char*
>(p), curLineNumPtr ) );
572 return !IsUTF8Continuation(p) && isspace(
static_cast<unsigned char>(p) );
580 if ( isalpha( ch ) ) {
583 return ch ==
':' || ch ==
'_';
587 return IsNameStartChar( ch )
593 inline static bool StringEqual(
const char* p,
const char* q,
int nChar=INT_MAX ) {
600 return strncmp( p, q, nChar ) == 0;
604 return ( p & 0x80 ) != 0;
607 static const char* ReadBOM(
const char* p,
bool* hasBOM );
610 static const char* GetCharacterRef(
const char* p,
char* value,
int* length );
611 static void ConvertUTF32ToUTF8(
unsigned long input,
char* output,
int* length );
614 static void ToStr(
int v,
char* buffer,
int bufferSize );
615 static void ToStr(
unsigned v,
char* buffer,
int bufferSize );
616 static void ToStr(
bool v,
char* buffer,
int bufferSize );
617 static void ToStr(
float v,
char* buffer,
int bufferSize );
618 static void ToStr(
double v,
char* buffer,
int bufferSize );
619 static void ToStr(int64_t v,
char* buffer,
int bufferSize);
620 static void ToStr(uint64_t v,
char* buffer,
int bufferSize);
623 static bool ToInt(
const char* str,
int* value );
624 static bool ToUnsigned(
const char* str,
unsigned* value );
625 static bool ToBool(
const char* str,
bool* value );
626 static bool ToFloat(
const char* str,
float* value );
627 static bool ToDouble(
const char* str,
double* value );
628 static bool ToInt64(
const char* str, int64_t* value);
629 static bool ToUnsigned64(
const char* str, uint64_t* value);
635 static void SetBoolSerialization(
const char* writeTrue,
const char* writeFalse);
738 const char* Value()
const;
743 void SetValue(
const char* val,
bool staticMem=
false );
774 const XMLElement* FirstChildElement(
const char* name = 0 )
const;
777 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->FirstChildElement( name ));
792 const XMLElement* LastChildElement(
const char* name = 0 )
const;
795 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->LastChildElement(name) );
808 const XMLElement* PreviousSiblingElement(
const char* name = 0 )
const ;
811 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->PreviousSiblingElement( name ) );
824 const XMLElement* NextSiblingElement(
const char* name = 0 )
const;
827 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->NextSiblingElement( name ) );
840 return InsertEndChild( addThis );
863 void DeleteChildren();
868 void DeleteChild(
XMLNode* node );
946 virtual char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr);
964 static void DeleteNode(
XMLNode* node );
965 void InsertChildPreamble(
XMLNode* insertThis )
const;
966 const XMLElement* ToElementWithName(
const char* name )
const;
989 virtual bool Accept(
XMLVisitor* visitor )
const;
1008 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1014 char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr );
1036 virtual bool Accept(
XMLVisitor* visitor )
const;
1039 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1045 char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr);
1075 virtual bool Accept(
XMLVisitor* visitor )
const;
1078 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1084 char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr );
1110 virtual bool Accept(
XMLVisitor* visitor )
const;
1113 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1119 char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr );
1139 const char* Name()
const;
1142 const char* Value()
const;
1164 QueryInt64Value(&i);
1170 QueryUnsigned64Value(&i);
1177 QueryUnsignedValue( &i );
1183 QueryBoolValue( &b );
1189 QueryDoubleValue( &d );
1195 QueryFloatValue( &f );
1203 XMLError QueryIntValue(
int* value )
const;
1205 XMLError QueryUnsignedValue(
unsigned int* value )
const;
1207 XMLError QueryInt64Value(int64_t* value)
const;
1209 XMLError QueryUnsigned64Value(uint64_t* value)
const;
1211 XMLError QueryBoolValue(
bool* value )
const;
1213 XMLError QueryDoubleValue(
double* value )
const;
1215 XMLError QueryFloatValue(
float* value )
const;
1218 void SetAttribute(
const char* value );
1220 void SetAttribute(
int value );
1222 void SetAttribute(
unsigned value );
1224 void SetAttribute(int64_t value);
1226 void SetAttribute(uint64_t value);
1228 void SetAttribute(
bool value );
1230 void SetAttribute(
double value );
1232 void SetAttribute(
float value );
1235 enum { BUF_SIZE = 200 };
1237 XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
1242 void SetName(
const char* name );
1244 char* ParseDeep(
char* p,
bool processEntities,
int* curLineNumPtr );
1267 void SetName(
const char* str,
bool staticMem=
false ) {
1268 SetValue( str, staticMem );
1277 virtual bool Accept(
XMLVisitor* visitor )
const;
1302 const char* Attribute(
const char* name,
const char* value=0 )
const;
1310 int IntAttribute(
const char* name,
int defaultValue = 0)
const;
1312 unsigned UnsignedAttribute(
const char* name,
unsigned defaultValue = 0)
const;
1314 int64_t Int64Attribute(
const char* name, int64_t defaultValue = 0)
const;
1316 uint64_t Unsigned64Attribute(
const char* name, uint64_t defaultValue = 0)
const;
1318 bool BoolAttribute(
const char* name,
bool defaultValue =
false)
const;
1320 double DoubleAttribute(
const char* name,
double defaultValue = 0)
const;
1322 float FloatAttribute(
const char* name,
float defaultValue = 0)
const;
1403 *value = a->
Value();
1427 return QueryIntAttribute( name, value );
1431 return QueryUnsignedAttribute( name, value );
1435 return QueryInt64Attribute(name, value);
1439 return QueryUnsigned64Attribute(name, value);
1443 return QueryBoolAttribute( name, value );
1447 return QueryDoubleAttribute( name, value );
1451 return QueryFloatAttribute( name, value );
1501 void DeleteAttribute(
const char* name );
1505 return _rootAttribute;
1508 const XMLAttribute* FindAttribute(
const char* name )
const;
1538 const char* GetText()
const;
1574 void SetText(
const char* inText );
1576 void SetText(
int value );
1578 void SetText(
unsigned value );
1580 void SetText(int64_t value);
1582 void SetText(uint64_t value);
1584 void SetText(
bool value );
1586 void SetText(
double value );
1588 void SetText(
float value );
1616 XMLError QueryIntText(
int* ival )
const;
1618 XMLError QueryUnsignedText(
unsigned* uval )
const;
1620 XMLError QueryInt64Text(int64_t* uval)
const;
1622 XMLError QueryUnsigned64Text(uint64_t* uval)
const;
1624 XMLError QueryBoolText(
bool* bval )
const;
1626 XMLError QueryDoubleText(
double* dval )
const;
1628 XMLError QueryFloatText(
float* fval )
const;
1630 int IntText(
int defaultValue = 0)
const;
1633 unsigned UnsignedText(
unsigned defaultValue = 0)
const;
1635 int64_t Int64Text(int64_t defaultValue = 0)
const;
1637 uint64_t Unsigned64Text(uint64_t defaultValue = 0)
const;
1639 bool BoolText(
bool defaultValue =
false)
const;
1641 double DoubleText(
double defaultValue = 0)
const;
1643 float FloatText(
float defaultValue = 0)
const;
1652 return _closingType;
1655 virtual bool ShallowEqual(
const XMLNode* compare )
const;
1658 char* ParseDeep(
char* p,
StrPair* parentEndTag,
int* curLineNumPtr );
1666 XMLAttribute* FindOrCreateAttribute(
const char* name );
1667 char* ParseAttributes(
char* p,
int* curLineNumPtr );
1668 static void DeleteAttribute(
XMLAttribute* attribute );
1671 enum { BUF_SIZE = 200 };
1725 XMLError Parse(
const char* xml,
size_t nBytes=
static_cast<size_t>(-1) );
1732 XMLError LoadFile(
const char* filename );
1752 XMLError SaveFile(
const char* filename,
bool compact =
false );
1761 XMLError SaveFile( FILE* fp,
bool compact =
false );
1764 return _processEntities;
1767 return _whitespaceMode;
1786 return FirstChildElement();
1789 return FirstChildElement();
1807 virtual bool Accept(
XMLVisitor* visitor )
const;
1820 XMLComment* NewComment(
const char* comment );
1826 XMLText* NewText(
const char* text );
1850 void DeleteNode(
XMLNode* node );
1864 const char* ErrorName()
const;
1865 static const char* ErrorIDToName(
XMLError errorID);
1870 const char* ErrorStr()
const;
1873 void PrintError()
const;
1878 return _errorLineNum;
1894 char* Identify(
char* p,
XMLNode** node );
1936 void SetError(
XMLError error,
int lineNum,
const char* format, ... );
1944 this->_document = document;
1948 _document->PopDepth();
1956 template<
class NodeType,
int PoolElementSize>
1960 template<
class NodeType,
int PoolElementSize>
1963 TIXMLASSERT(
sizeof( NodeType ) == PoolElementSize );
1965 NodeType* returnNode =
new (pool.
Alloc()) NodeType(
this );
1967 returnNode->_memPool = &pool;
2048 return XMLHandle( _node ? _node->FirstChild() : 0 );
2052 return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
2056 return XMLHandle( _node ? _node->LastChild() : 0 );
2060 return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
2064 return XMLHandle( _node ? _node->PreviousSibling() : 0 );
2068 return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
2072 return XMLHandle( _node ? _node->NextSibling() : 0 );
2076 return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
2085 return ( _node ? _node->ToElement() : 0 );
2089 return ( _node ? _node->ToText() : 0 );
2093 return ( _node ? _node->ToUnknown() : 0 );
2097 return ( _node ? _node->ToDeclaration() : 0 );
2128 return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
2134 return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
2140 return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
2146 return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
2154 return ( _node ? _node->ToElement() : 0 );
2157 return ( _node ? _node->ToText() : 0 );
2160 return ( _node ? _node->ToUnknown() : 0 );
2163 return ( _node ? _node->ToDeclaration() : 0 );
2222 XMLPrinter( FILE* file=0,
bool compact =
false,
int depth = 0 );
2226 void PushHeader(
bool writeBOM,
bool writeDeclaration );
2230 void OpenElement(
const char* name,
bool compactMode=
false );
2232 void PushAttribute(
const char* name,
const char* value );
2233 void PushAttribute(
const char* name,
int value );
2234 void PushAttribute(
const char* name,
unsigned value );
2235 void PushAttribute(
const char* name, int64_t value );
2236 void PushAttribute(
const char* name, uint64_t value );
2237 void PushAttribute(
const char* name,
bool value );
2238 void PushAttribute(
const char* name,
double value );
2240 virtual void CloseElement(
bool compactMode=
false );
2243 void PushText(
const char* text,
bool cdata=
false );
2245 void PushText(
int value );
2247 void PushText(
unsigned value );
2249 void PushText( int64_t value );
2251 void PushText( uint64_t value );
2253 void PushText(
bool value );
2255 void PushText(
float value );
2257 void PushText(
double value );
2260 void PushComment(
const char* comment );
2262 void PushDeclaration(
const char* value );
2263 void PushUnknown(
const char* value );
2271 virtual bool VisitExit(
const XMLElement& element );
2273 virtual bool Visit(
const XMLText& text );
2274 virtual bool Visit(
const XMLComment& comment );
2276 virtual bool Visit(
const XMLUnknown& unknown );
2283 return _buffer.Mem();
2291 return _buffer.Size();
2300 _firstElement = resetToFirstElement;
2309 virtual void PrintSpace(
int depth );
2310 void Print(
const char* format, ... );
2311 void Write(
const char* data,
size_t size );
2312 inline void Write(
const char* data ) {
Write( data, strlen( data ) ); }
2313 void Putc(
char ch );
2315 void SealElementIfJustOpened();
2320 void PrintString(
const char*,
bool restrictedEntitySet );
2333 bool _entityFlag[ENTITY_RANGE];
2334 bool _restrictedEntityFlag[ENTITY_RANGE];
2346 #if defined(_MSC_VER)
2347 # pragma warning(pop)
2350 #endif // TINYXML2_INCLUDED
void operator=(const StrPair &other)
XMLNode * FirstChild()
Definition: tinyxml2.h:767
int _allocated
Definition: tinyxml2.h:320
XMLAttribute * _next
Definition: tinyxml2.h:1249
XMLError QueryFloatValue(float *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1457
XMLHandle(const XMLHandle &ref)
Copy constructor.
Definition: tinyxml2.h:2038
virtual bool Visit(const XMLDeclaration &)
Visit a declaration.
Definition: tinyxml2.h:504
Whitespace WhitespaceMode() const
Definition: tinyxml2.h:1766
Definition: tinyxml2.h:443
char itemData[ITEM_SIZE]
Definition: tinyxml2.h:445
int IntValue() const
Definition: tinyxml2.h:1156
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition: tinyxml2.h:686
double DoubleValue() const
Query as a double. See IntValue()
Definition: tinyxml2.h:1187
DynArray< Block *, 10 > _blockPtrs
Definition: tinyxml2.h:450
const T & PeekTop() const
Definition: tinyxml2.h:266
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition: tinyxml2.h:698
StrPair _value
Definition: tinyxml2.h:950
void SetAttribute(const char *name, int value)
Sets the named attribute to value.
Definition: tinyxml2.h:1460
Definition: tinyxml2.h:669
const char * Value() const
The value of the attribute.
Definition: tinyxml2.cpp:1373
MemPool * _memPool
Definition: tinyxml2.h:962
bool _isCData
Definition: tinyxml2.h:1017
const XMLConstHandle FirstChildElement(const char *name=0) const
Definition: tinyxml2.h:2127
void SetUserData(void *userData)
Definition: tinyxml2.h:933
@ XML_NO_TEXT_NODE
Definition: tinyxml2.h:540
~MemPoolT()
Definition: tinyxml2.h:350
XMLNode * _node
Definition: tinyxml2.h:2101
void SetName(const char *str, bool staticMem=false)
Set the name of the element.
Definition: tinyxml2.h:1267
XMLError QueryAttribute(const char *name, double *value) const
Definition: tinyxml2.h:1446
bool _firstElement
Definition: tinyxml2.h:2322
XMLText(XMLDocument *doc)
Definition: tinyxml2.h:1011
XMLDeclaration * ToDeclaration()
Safe cast to XMLDeclaration. This can return null.
Definition: tinyxml2.h:2096
virtual bool Accept(XMLVisitor *visitor) const =0
int GetLineNum() const
Gets the line number the node is in, if the document was parsed from a file.
Definition: tinyxml2.h:746
int _currentAllocs
Definition: tinyxml2.h:453
@ COLLAPSE_WHITESPACE
Definition: tinyxml2.h:1682
void operator=(const XMLAttribute &)
Definition: tinyxml2.h:986
Definition: tinyxml2.h:206
bool _processEntities
Definition: tinyxml2.h:2326
static char * SkipWhiteSpace(char *p, int *curLineNumPtr)
Definition: tinyxml2.h:565
ElementClosingType _closingType
Definition: tinyxml2.h:1672
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition: tinyxml2.h:1271
virtual void Free(void *mem)
Definition: tinyxml2.h:400
virtual const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:1106
XMLError QueryInt64Attribute(const char *name, int64_t *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1355
StrPair _value
Definition: tinyxml2.h:1247
virtual const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:1071
const XMLText * ToText() const
Definition: tinyxml2.h:2156
~DepthTracker()
Definition: tinyxml2.h:1947
XMLElement * NextSiblingElement(const char *name=0)
Definition: tinyxml2.h:826
XMLHandle FirstChildElement(const char *name=0)
Get the first child element of this handle.
Definition: tinyxml2.h:2051
MemPool()
Definition: tinyxml2.h:332
@ XML_ERROR_PARSING_UNKNOWN
Definition: tinyxml2.h:535
XMLUnknown & operator=(const XMLUnknown &)
void ClearBuffer(bool resetToFirstElement=true)
Definition: tinyxml2.h:2297
XMLError
Definition: tinyxml2.h:522
XMLError QueryUnsigned64Attribute(const char *name, uint64_t *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1364
Definition: tinyxml2.h:1100
const XMLConstHandle LastChildElement(const char *name=0) const
Definition: tinyxml2.h:2133
bool _compactMode
Definition: tinyxml2.h:2327
XMLDeclaration & operator=(const XMLDeclaration &)
#define TIXMLASSERT(x)
Definition: tinyxml2.h:94
XMLError QueryDoubleValue(double *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1466
XMLNode * _prev
Definition: tinyxml2.h:956
XMLHandle & operator=(const XMLHandle &ref)
Assignment.
Definition: tinyxml2.h:2041
virtual int ItemSize() const
Definition: tinyxml2.h:367
virtual ~XMLPrinter()
Definition: tinyxml2.h:2223
DynArray()
Definition: tinyxml2.h:208
@ XML_ERROR_FILE_NOT_FOUND
Definition: tinyxml2.h:526
XMLNode * _firstChild
Definition: tinyxml2.h:953
XMLError QueryUnsigned64Value(uint64_t *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1439
@ XML_ERROR_FILE_COULD_NOT_BE_OPENED
Definition: tinyxml2.h:527
@ XML_WRONG_ATTRIBUTE_TYPE
Definition: tinyxml2.h:525
virtual bool ShallowEqual(const XMLNode *compare) const =0
virtual const XMLText * ToText() const
Definition: tinyxml2.h:994
StrPair _name
Definition: tinyxml2.h:1246
void * _userData
Definition: tinyxml2.h:959
virtual bool Visit(const XMLUnknown &)
Visit an unknown node.
Definition: tinyxml2.h:516
Item * next
Definition: tinyxml2.h:444
static const char * SkipWhiteSpace(const char *p, int *curLineNumPtr)
Definition: tinyxml2.h:553
void Set(char *start, char *end, int flags)
Definition: tinyxml2.h:154
XMLNode * NextSibling()
Definition: tinyxml2.h:819
const XMLNode * PreviousSibling() const
Get the previous (left) sibling node of this node.
Definition: tinyxml2.h:799
void operator=(const MemPoolT &)
void SetAttribute(const char *name, uint64_t value)
Sets the named attribute to value.
Definition: tinyxml2.h:1477
XMLNode * LinkEndChild(XMLNode *addThis)
Definition: tinyxml2.h:839
@ XML_ERROR_PARSING_DECLARATION
Definition: tinyxml2.h:534
@ XML_ERROR_FILE_READ_ERROR
Definition: tinyxml2.h:528
Whitespace _whitespaceMode
Definition: tinyxml2.h:1913
int _depth
Definition: tinyxml2.h:2324
T & operator[](int i)
Definition: tinyxml2.h:256
@ XML_ERROR_PARSING_ELEMENT
Definition: tinyxml2.h:529
StrPair()
Definition: tinyxml2.h:151
XMLConstHandle(const XMLNode &node)
Definition: tinyxml2.h:2114
void operator=(const DynArray &)
const XMLNode * Parent() const
Get the parent of this node on the DOM.
Definition: tinyxml2.h:749
const char * Name() const
Get the name of an element (which is the Value() of the node.)
Definition: tinyxml2.h:1263
T * Mem()
Definition: tinyxml2.h:293
int _parsingDepth
Definition: tinyxml2.h:1918
DynArray< char, 20 > _buffer
Definition: tinyxml2.h:2336
const XMLConstHandle PreviousSibling() const
Definition: tinyxml2.h:2136
@ XML_ERROR_PARSING_TEXT
Definition: tinyxml2.h:531
XMLUnknown * ToUnknown()
Safe cast to XMLUnknown. This can return null.
Definition: tinyxml2.h:2092
float FloatValue() const
Query as a float. See IntValue()
Definition: tinyxml2.h:1193
int _parseCurLineNum
Definition: tinyxml2.h:1917
XMLNode * _parent
Definition: tinyxml2.h:949
void SetBOM(bool useBOM)
Definition: tinyxml2.h:1778
XMLText & operator=(const XMLText &)
const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:2159
Definition: tinyxml2.h:1941
void SetAttribute(const char *name, double value)
Sets the named attribute to value.
Definition: tinyxml2.h:1488
const XMLConstHandle NextSiblingElement(const char *name=0) const
Definition: tinyxml2.h:2145
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:486
const XMLNode * LastChild() const
Get the last child node, or null if none exists.
Definition: tinyxml2.h:781
Definition: tinyxml2.h:1692
XMLConstHandle & operator=(const XMLConstHandle &ref)
Definition: tinyxml2.h:2119
StrPair(const StrPair &other)
XMLError QueryStringAttribute(const char *name, const char **value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1398
XMLHandle PreviousSiblingElement(const char *name=0)
Get the previous sibling element of this handle.
Definition: tinyxml2.h:2067
int Size() const
Definition: tinyxml2.h:271
XMLHandle LastChildElement(const char *name=0)
Get the last child element of this handle.
Definition: tinyxml2.h:2059
#define TINYXML2_LIB
Definition: tinyxml2.h:78
void operator=(const XMLDocument &)
Definition: tinyxml2.h:2110
XMLDocument(const XMLDocument &)
XMLHandle LastChild()
Get the last child of this handle.
Definition: tinyxml2.h:2055
void PushDepth()
Definition: tinyxml2.cpp:2466
T * _mem
Definition: tinyxml2.h:318
@ XML_ERROR_PARSING_COMMENT
Definition: tinyxml2.h:533
XMLNode * _next
Definition: tinyxml2.h:957
XMLError QueryBoolValue(bool *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1448
XMLElement * FirstChildElement(const char *name=0)
Definition: tinyxml2.h:776
uint64_t Unsigned64Value() const
Definition: tinyxml2.h:1168
XMLHandle FirstChild()
Get the first child of this handle.
Definition: tinyxml2.h:2047
void SetAttribute(const char *name, float value)
Sets the named attribute to value.
Definition: tinyxml2.h:1493
XMLHandle(XMLNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition: tinyxml2.h:2032
void SetCData(bool isCData)
Declare whether this should be CDATA or standard text.
Definition: tinyxml2.h:999
const XMLConstHandle LastChild() const
Definition: tinyxml2.h:2130
XMLError QueryAttribute(const char *name, uint64_t *value) const
Definition: tinyxml2.h:1438
bool NoChildren() const
Returns true if this node has no children.
Definition: tinyxml2.h:758
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition: tinyxml2.h:1706
void Clear()
Definition: tinyxml2.h:221
Definition: tinyxml2.h:136
XMLDeclaration(const XMLDeclaration &)
XMLElement(const XMLElement &)
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:490
Whitespace
Definition: tinyxml2.h:1680
Definition: tinyxml2.h:1065
T * PushArr(int count)
Definition: tinyxml2.h:232
const XMLNode * NextSibling() const
Get the next (right) sibling node of this node.
Definition: tinyxml2.h:815
unsigned UnsignedValue() const
Query as an unsigned integer. See IntValue()
Definition: tinyxml2.h:1175
virtual ~MemPool()
Definition: tinyxml2.h:333
virtual XMLNode * ShallowClone(XMLDocument *document) const =0
void SetTracked()
Definition: tinyxml2.h:418
@ XML_SUCCESS
Definition: tinyxml2.h:523
Item * _root
Definition: tinyxml2.h:451
XMLHandle NextSiblingElement(const char *name=0)
Get the next sibling element of this handle.
Definition: tinyxml2.h:2075
XMLText * ToText()
Safe cast to XMLText. This can return null.
Definition: tinyxml2.h:2088
virtual void SetTracked()=0
int CStrSize() const
Definition: tinyxml2.h:2290
bool _processEntities
Definition: tinyxml2.h:1911
void EnsureCapacity(int cap)
Definition: tinyxml2.h:302
virtual void * Alloc()
Definition: tinyxml2.h:374
int _nUntracked
Definition: tinyxml2.h:456
const XMLElement * RootElement() const
Definition: tinyxml2.h:1788
Definition: tinyxml2.h:481
XMLElement * LastChildElement(const char *name=0)
Definition: tinyxml2.h:794
const XMLElement * ToElement() const
Definition: tinyxml2.h:2153
DynArray< XMLNode *, 10 > _unlinked
Definition: tinyxml2.h:1925
XMLConstHandle(const XMLConstHandle &ref)
Definition: tinyxml2.h:2116
XMLAttribute * _rootAttribute
Definition: tinyxml2.h:1676
XMLNode * _lastChild
Definition: tinyxml2.h:954
void Clear()
Definition: tinyxml2.h:354
virtual const XMLComment * ToComment() const
Definition: tinyxml2.h:716
static bool IsNameStartChar(unsigned char ch)
Definition: tinyxml2.h:575
const XMLDocument * GetDocument() const
Get the XMLDocument that owns this XMLNode.
Definition: tinyxml2.h:675
void ClearError()
Definition: tinyxml2.h:1852
virtual ~XMLAttribute()
Definition: tinyxml2.h:1238
Definition: tinyxml2.h:551
void Push(T t)
Definition: tinyxml2.h:225
Item items[ITEMS_PER_BLOCK]
Definition: tinyxml2.h:448
void Trace(const char *name)
Definition: tinyxml2.h:412
const XMLConstHandle FirstChild() const
Definition: tinyxml2.h:2124
@ ITEMS_PER_BLOCK
Definition: tinyxml2.h:437
~DynArray()
Definition: tinyxml2.h:215
XMLError _errorID
Definition: tinyxml2.h:1912
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition: tinyxml2.h:991
int _size
Definition: tinyxml2.h:321
virtual const XMLDocument * ToDocument() const
Definition: tinyxml2.h:1710
int64_t Int64Value() const
Definition: tinyxml2.h:1162
const XMLConstHandle PreviousSiblingElement(const char *name=0) const
Definition: tinyxml2.h:2139
XMLConstHandle(const XMLNode *node)
Definition: tinyxml2.h:2112
virtual XMLNode * ShallowClone(XMLDocument *) const
Definition: tinyxml2.h:1899
void SetAttribute(const char *name, int64_t value)
Sets the named attribute to value.
Definition: tinyxml2.h:1471
T _pool[INITIAL_SIZE]
Definition: tinyxml2.h:319
int ErrorLineNum() const
Return the line where the error occurred, or zero if unknown.
Definition: tinyxml2.h:1876
ElementClosingType ClosingType() const
Definition: tinyxml2.h:1651
virtual const XMLElement * ToElement() const
Definition: tinyxml2.h:710
@ OPEN
Definition: tinyxml2.h:1647
@ XML_ERROR_PARSING_CDATA
Definition: tinyxml2.h:532
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition: tinyxml2.h:2266
virtual const XMLUnknown * ToUnknown() const
Definition: tinyxml2.h:725
virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
Visit an element.
Definition: tinyxml2.h:495
Definition: tinyxml2.h:2214
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
Definition: tinyxml2.h:2080
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition: tinyxml2.h:1103
void operator=(const XMLElement &)
int Capacity() const
Definition: tinyxml2.h:276
XMLError QueryDoubleAttribute(const char *name, double *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1381
void SetAttribute(const char *name, bool value)
Sets the named attribute to value.
Definition: tinyxml2.h:1483
void SetInternedStr(const char *str)
Definition: tinyxml2.h:169
XMLPrinter & operator=(const XMLPrinter &)
T Pop()
Definition: tinyxml2.h:241
bool CData() const
Returns true if this is a CDATA text element.
Definition: tinyxml2.h:1003
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition: tinyxml2.h:1068
bool _elementJustOpened
Definition: tinyxml2.h:2316
XMLError QueryAttribute(const char *name, unsigned int *value) const
Definition: tinyxml2.h:1430
char * _charBuffer
Definition: tinyxml2.h:1916
virtual int ItemSize() const =0
virtual bool CompactMode(const XMLElement &)
Definition: tinyxml2.h:2304
@ CLOSED
Definition: tinyxml2.h:1648
int CurrentAllocs() const
Definition: tinyxml2.h:370
const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:2162
bool Error() const
Return true if there was an error parsing the document.
Definition: tinyxml2.h:1857
@ XML_ERROR_PARSING_ATTRIBUTE
Definition: tinyxml2.h:530
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition: tinyxml2.h:702
virtual bool Visit(const XMLText &)
Visit a text node.
Definition: tinyxml2.h:508
void SetAttribute(const char *value)
Set the attribute to a string value.
Definition: tinyxml2.cpp:1475
Definition: tinyxml2.h:347
XMLUnknown(const XMLUnknown &)
virtual bool VisitExit(const XMLElement &)
Visit an element.
Definition: tinyxml2.h:499
XMLNode * Parent()
Definition: tinyxml2.h:753
virtual ~XMLVisitor()
Definition: tinyxml2.h:483
Definition: tinyxml2.h:2029
@ PRESERVE_WHITESPACE
Definition: tinyxml2.h:1681
int _textDepth
Definition: tinyxml2.h:2325
void SwapRemove(int i)
Definition: tinyxml2.h:281
virtual const XMLElement * ToElement() const
Definition: tinyxml2.h:1274
const char * CStr() const
Definition: tinyxml2.h:2282
bool Empty() const
Definition: tinyxml2.h:165
virtual void Free(void *)=0
void Write(const char *data)
Definition: tinyxml2.h:2312
XMLError QueryAttribute(const char *name, int *value) const
Definition: tinyxml2.h:1426
bool ProcessEntities() const
Definition: tinyxml2.h:1763
XMLNode * LastChild()
Definition: tinyxml2.h:785
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition: tinyxml2.h:690
const XMLNode * _node
Definition: tinyxml2.h:2167
NodeType * CreateUnlinkedNode(MemPoolT< PoolElementSize > &pool)
Definition: tinyxml2.h:1961
const XMLConstHandle NextSibling() const
Definition: tinyxml2.h:2142
static bool IsWhiteSpace(char p)
Definition: tinyxml2.h:571
bool Empty() const
Definition: tinyxml2.h:252
virtual const XMLDeclaration * ToDeclaration() const
Definition: tinyxml2.h:722
const XMLNode * ToNode() const
Definition: tinyxml2.h:2150
XMLNode & operator=(const XMLNode &)
XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1346
const T * Mem() const
Definition: tinyxml2.h:288
MemPoolT()
Definition: tinyxml2.h:349
virtual bool ShallowEqual(const XMLNode *) const
Definition: tinyxml2.h:1902
static bool StringEqual(const char *p, const char *q, int nChar=INT_MAX)
Definition: tinyxml2.h:593
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition: tinyxml2.h:706
StrPair _errorStr
Definition: tinyxml2.h:1914
Definition: tinyxml2.h:447
int _parseLineNum
Definition: tinyxml2.h:951
XMLAttribute(const XMLAttribute &)
int _errorLineNum
Definition: tinyxml2.h:1915
XMLNode * PreviousSibling()
Definition: tinyxml2.h:803
XMLError QueryAttribute(const char *name, float *value) const
Definition: tinyxml2.h:1450
int _nAllocs
Definition: tinyxml2.h:454
int GetLineNum() const
Gets the line number the attribute is in, if the document was parsed from a file.
Definition: tinyxml2.h:1145
@ XML_CAN_NOT_CONVERT_TEXT
Definition: tinyxml2.h:539
const XMLAttribute * Next() const
The next attribute in the list.
Definition: tinyxml2.h:1148
DynArray(const DynArray &)
Definition: tinyxml2.h:1135
XMLHandle PreviousSibling()
Get the previous sibling of this handle.
Definition: tinyxml2.h:2063
const XMLNode * FirstChild() const
Get the first child node, or null if none exists.
Definition: tinyxml2.h:763
@ XML_ELEMENT_DEPTH_EXCEEDED
Definition: tinyxml2.h:541
static bool IsUTF8Continuation(char p)
Definition: tinyxml2.h:603
const XMLAttribute * FirstAttribute() const
Return the first attribute in the list.
Definition: tinyxml2.h:1504
int _flags
Definition: tinyxml2.h:190
FILE * _fp
Definition: tinyxml2.h:2323
Definition: tinyxml2.h:117
char * _start
Definition: tinyxml2.h:191
static const char * writeBoolFalse
Definition: tinyxml2.h:639
XMLHandle(XMLNode &node)
Create a handle from a node.
Definition: tinyxml2.h:2035
int _maxAllocs
Definition: tinyxml2.h:455
XMLAttribute()
Definition: tinyxml2.h:1237
int _parseLineNum
Definition: tinyxml2.h:1248
virtual const XMLDocument * ToDocument() const
Definition: tinyxml2.h:719
MemPool * _memPool
Definition: tinyxml2.h:1250
ElementClosingType
Definition: tinyxml2.h:1646
DepthTracker(XMLDocument *document)
Definition: tinyxml2.h:1943
Definition: tinyxml2.h:330
@ XML_ERROR_MISMATCHED_ELEMENT
Definition: tinyxml2.h:537
XMLDocument * _document
Definition: tinyxml2.h:948
XMLError ErrorID() const
Return the errorID.
Definition: tinyxml2.h:1861
void SetAttribute(const char *name, const char *value)
Sets the named attribute to value.
Definition: tinyxml2.h:1455
const T & operator[](int i) const
Definition: tinyxml2.h:261
XMLDocument * GetDocument()
Get the XMLDocument that owns this XMLNode.
Definition: tinyxml2.h:680
DynArray< const char *, 10 > _stack
Definition: tinyxml2.h:2317
void PopArr(int count)
Definition: tinyxml2.h:247
XMLError QueryAttribute(const char *name, bool *value) const
Definition: tinyxml2.h:1442
XMLElement * RootElement()
Definition: tinyxml2.h:1785
static bool IsNameChar(unsigned char ch)
Definition: tinyxml2.h:586
char * _end
Definition: tinyxml2.h:192
@ XML_ERROR_COUNT
Definition: tinyxml2.h:543
@ XML_NO_ATTRIBUTE
Definition: tinyxml2.h:524
Definition: tinyxml2.h:1259
int Untracked() const
Definition: tinyxml2.h:422
virtual XMLComment * ToComment()
Safely cast to a Comment, or null.
Definition: tinyxml2.h:694
XMLError QueryInt64Value(int64_t *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1430
XMLError QueryUnsignedValue(unsigned int *value) const
See QueryIntValue.
Definition: tinyxml2.cpp:1421
virtual bool Visit(const XMLComment &)
Visit a comment node.
Definition: tinyxml2.h:512
XMLError QueryBoolAttribute(const char *name, bool *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1373
@ XML_ERROR_PARSING
Definition: tinyxml2.h:538
bool BoolValue() const
Query as a boolean. See IntValue()
Definition: tinyxml2.h:1181
virtual ~XMLText()
Definition: tinyxml2.h:1012
virtual const XMLText * ToText() const
Definition: tinyxml2.h:713
XMLError QueryIntAttribute(const char *name, int *value) const
Definition: tinyxml2.h:1337
XMLError QueryIntValue(int *value) const
Definition: tinyxml2.cpp:1412
void * GetUserData() const
Definition: tinyxml2.h:940
XMLHandle NextSibling()
Get the next sibling of this handle.
Definition: tinyxml2.h:2071
@ XML_ERROR_EMPTY_DOCUMENT
Definition: tinyxml2.h:536
bool HasBOM() const
Definition: tinyxml2.h:1773
XMLDocument * _document
Definition: tinyxml2.h:1951
XMLPrinter(const XMLPrinter &)
void SetAttribute(const char *name, unsigned value)
Sets the named attribute to value.
Definition: tinyxml2.h:1465
XMLElement * PreviousSiblingElement(const char *name=0)
Definition: tinyxml2.h:810
bool _writeBOM
Definition: tinyxml2.h:1910
MemPoolT(const MemPoolT &)
XMLError QueryFloatAttribute(const char *name, float *value) const
See QueryIntAttribute()
Definition: tinyxml2.h:1389
XMLError QueryAttribute(const char *name, int64_t *value) const
Definition: tinyxml2.h:1434
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
Definition: tinyxml2.h:2084
static const char * writeBoolTrue
Definition: tinyxml2.h:638