19#ifndef TINYXML2_INCLUDED
20#define TINYXML2_INCLUDED
22#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
48#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
56# pragma warning(disable: 4251)
60# ifdef TINYXML2_EXPORT
61# define TINYXML2_LIB __declspec(dllexport)
62# elif defined(TINYXML2_IMPORT)
63# define TINYXML2_LIB __declspec(dllimport)
75# define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); }
76# elif defined (ANDROID_NDK)
77# include <android/log.h>
78# define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
81# define TIXMLASSERT assert
84# define TIXMLASSERT( x ) {}
88#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)
97inline int TIXML_SNPRINTF(
char* buffer,
size_t size,
const char* format, ...)
100 va_start(va, format);
101 int result = vsnprintf_s(buffer, size, _TRUNCATE, format, va);
105#define TIXML_SSCANF sscanf_s
107#define TIXML_SNPRINTF _snprintf
108#define TIXML_SSCANF sscanf
112#define TIXML_SNPRINTF snprintf
113#define TIXML_SSCANF sscanf
130 class XMLDeclaration;
159 void Set(
char* start,
char* end,
int flags) {
174 _start =
const_cast<char*
>(str);
177 void SetStr(
const char* str,
int flags = 0);
179 char*
ParseText(
char* in,
const char* endTag,
int strFlags);
208 template <
class T,
int INIT>
297 int newAllocated = cap * 2;
298 T* newMem =
new T[newAllocated];
371 for (
int i = 0; i<
COUNT - 1; ++i) {
377 void* result =
_root;
396 memset(chunk, 0xfe,
sizeof(
Chunk));
402 printf(
"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
562 return ch ==
':' || ch ==
'_';
572 inline static bool StringEqual(
const char*
p,
const char* q,
int nChar = INT_MAX) {
577 while (*
p && *q && *
p == *q && n<nChar) {
582 if ((n == nChar) || (*
p == 0 && *q == 0)) {
589 return (
p & 0x80) != 0;
592 static const char*
ReadBOM(
const char*
p,
bool* hasBOM);
595 static const char*
GetCharacterRef(
const char*
p,
char* value,
int* length);
599 static void ToStr(
int v,
char* buffer,
int bufferSize);
600 static void ToStr(
unsigned v,
char* buffer,
int bufferSize);
601 static void ToStr(
bool v,
char* buffer,
int bufferSize);
602 static void ToStr(
float v,
char* buffer,
int bufferSize);
603 static void ToStr(
double v,
char* buffer,
int bufferSize);
606 static bool ToInt(
const char* str,
int* value);
607 static bool ToUnsigned(
const char* str,
unsigned* value);
608 static bool ToBool(
const char* str,
bool* value);
609 static bool ToFloat(
const char* str,
float* value);
610 static bool ToDouble(
const char* str,
double* value);
703 const char* Value()
const;
708 void SetValue(
const char* val,
bool staticMem =
false);
736 const XMLElement* FirstChildElement(
const char* value = 0)
const;
739 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->FirstChildElement(value));
748 return const_cast<XMLNode*
>(
const_cast<const XMLNode*
>(
this)->LastChild());
754 const XMLElement* LastChildElement(
const char* value = 0)
const;
757 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->LastChildElement(value));
770 const XMLElement* PreviousSiblingElement(
const char* value = 0)
const;
773 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->PreviousSiblingElement(value));
786 const XMLElement* NextSiblingElement(
const char* value = 0)
const;
789 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->NextSiblingElement(value));
825 void DeleteChildren();
830 void DeleteChild(
XMLNode* node);
929 char* ParseDeep(
char*,
StrPair* endTag);
931 virtual bool ShallowEqual(
const XMLNode* compare)
const;
957 virtual bool Accept(
XMLVisitor* visitor)
const;
959 char* ParseDeep(
char*,
StrPair* endTag);
961 virtual bool ShallowEqual(
const XMLNode* compare)
const;
993 virtual bool Accept(
XMLVisitor* visitor)
const;
995 char* ParseDeep(
char*,
StrPair* endTag);
997 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1026 virtual bool Accept(
XMLVisitor* visitor)
const;
1028 char* ParseDeep(
char*,
StrPair* endTag);
1030 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1053 const char*
Name()
const;
1056 const char*
Value()
const;
1101 XMLError QueryIntValue(
int* value)
const;
1103 XMLError QueryUnsignedValue(
unsigned int* value)
const;
1105 XMLError QueryBoolValue(
bool* value)
const;
1107 XMLError QueryDoubleValue(
double* value)
const;
1109 XMLError QueryFloatValue(
float* value)
const;
1112 void SetAttribute(
const char* value);
1114 void SetAttribute(
int value);
1116 void SetAttribute(
unsigned value);
1118 void SetAttribute(
bool value);
1120 void SetAttribute(
double value);
1122 void SetAttribute(
float value);
1132 void SetName(
const char* name);
1134 char*
ParseDeep(
char*
p,
bool processEntities);
1157 void SetName(
const char* str,
bool staticMem =
false) {
1167 virtual bool Accept(
XMLVisitor* visitor)
const;
1188 const char* Attribute(
const char* name,
const char* value = 0)
const;
1348 void DeleteAttribute(
const char* name);
1355 const XMLAttribute* FindAttribute(
const char* name)
const;
1380 const char* GetText()
const;
1412 void SetText(
const char* inText);
1414 void SetText(
int value);
1416 void SetText(
unsigned value);
1418 void SetText(
bool value);
1420 void SetText(
double value);
1422 void SetText(
float value);
1446 XMLError QueryIntText(
int* ival)
const;
1448 XMLError QueryUnsignedText(
unsigned* uval)
const;
1450 XMLError QueryBoolText(
bool* bval)
const;
1452 XMLError QueryDoubleText(
double* dval)
const;
1454 XMLError QueryFloatText(
float* fval)
const;
1465 char* ParseDeep(
char*
p,
StrPair* endTag);
1467 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1480 char* ParseAttributes(
char*
p);
1527 XMLError Parse(
const char* xml,
size_t nBytes = (
size_t)(-1));
1534 XMLError LoadFile(
const char* filename);
1553 XMLError SaveFile(
const char* filename,
bool compact =
false);
1561 XMLError SaveFile(FILE* fp,
bool compact =
false);
1606 virtual bool Accept(
XMLVisitor* visitor)
const;
1625 XMLText* NewText(
const char* text);
1648 void DeleteNode(
XMLNode* node);
1650 void SetError(
XMLError error,
const char* str1,
const char* str2);
1660 const char* ErrorName()
const;
1671 void PrintError()
const;
1677 char* Identify(
char*
p,
XMLNode** node);
1816 return ((
_node == 0) ? 0 :
_node->ToElement());
1824 return ((
_node == 0) ? 0 :
_node->ToUnknown());
1828 return ((
_node == 0) ? 0 :
_node->ToDeclaration());
1888 return ((
_node == 0) ? 0 :
_node->ToElement());
1894 return ((
_node == 0) ? 0 :
_node->ToUnknown());
1897 return ((
_node == 0) ? 0 :
_node->ToDeclaration());
1947 XMLPrinter(FILE* file = 0,
bool compact =
false,
int depth = 0);
1951 void PushHeader(
bool writeBOM,
bool writeDeclaration);
1955 void OpenElement(
const char* name,
bool compactMode =
false);
1957 void PushAttribute(
const char* name,
const char* value);
1958 void PushAttribute(
const char* name,
int value);
1959 void PushAttribute(
const char* name,
unsigned value);
1960 void PushAttribute(
const char* name,
bool value);
1961 void PushAttribute(
const char* name,
double value);
1963 virtual void CloseElement(
bool compactMode =
false);
1966 void PushText(
const char* text,
bool cdata =
false);
1968 void PushText(
int value);
1970 void PushText(
unsigned value);
1972 void PushText(
bool value);
1974 void PushText(
float value);
1976 void PushText(
double value);
1979 void PushComment(
const char* comment);
1981 void PushDeclaration(
const char* value);
1982 void PushUnknown(
const char* value);
1990 virtual bool VisitExit(
const XMLElement& element);
1992 virtual bool Visit(
const XMLText& text);
1993 virtual bool Visit(
const XMLComment& comment);
1995 virtual bool Visit(
const XMLUnknown& unknown);
2027 virtual void PrintSpace(
int depth);
2028 void Print(
const char* format, ...);
2030 void SealElementIfJustOpened();
2035 void PrintString(
const char*,
bool restrictedEntitySet);
2057#if defined(_MSC_VER)
2058# pragma warning(pop)
Definition tinyxml2.h:210
T Pop()
Definition tinyxml2.h:243
T * _mem
Definition tinyxml2.h:308
T & operator[](int i)
Definition tinyxml2.h:257
void Push(T t)
Definition tinyxml2.h:228
T * Mem()
Definition tinyxml2.h:285
T * PushArr(int count)
Definition tinyxml2.h:234
void EnsureCapacity(int cap)
Definition tinyxml2.h:293
int Size() const
Definition tinyxml2.h:272
int Capacity() const
Definition tinyxml2.h:277
const T * Mem() const
Definition tinyxml2.h:281
int _size
Definition tinyxml2.h:311
const T & operator[](int i) const
Definition tinyxml2.h:262
const T & PeekTop() const
Definition tinyxml2.h:267
int _allocated
Definition tinyxml2.h:310
void Clear()
Definition tinyxml2.h:224
void PopArr(int count)
Definition tinyxml2.h:248
T _pool[INIT]
Definition tinyxml2.h:309
~DynArray()
Definition tinyxml2.h:218
void operator=(const DynArray &)
DynArray(const DynArray &)
DynArray()
Definition tinyxml2.h:212
bool Empty() const
Definition tinyxml2.h:253
Definition tinyxml2.h:338
void Trace(const char *name)
Definition tinyxml2.h:401
virtual int ItemSize() const
Definition tinyxml2.h:358
int _nAllocs
Definition tinyxml2.h:440
int Untracked() const
Definition tinyxml2.h:410
void Clear()
Definition tinyxml2.h:345
virtual void Free(void *mem)
Definition tinyxml2.h:389
void operator=(const MemPoolT &)
void SetTracked()
Definition tinyxml2.h:406
MemPoolT()
Definition tinyxml2.h:340
@ COUNT
Definition tinyxml2.h:423
int _maxAllocs
Definition tinyxml2.h:441
int _nUntracked
Definition tinyxml2.h:442
int CurrentAllocs() const
Definition tinyxml2.h:361
virtual void * Alloc()
Definition tinyxml2.h:365
~MemPoolT()
Definition tinyxml2.h:341
int _currentAllocs
Definition tinyxml2.h:439
Chunk * _root
Definition tinyxml2.h:437
MemPoolT(const MemPoolT &)
DynArray< Block *, 10 > _blockPtrs
Definition tinyxml2.h:436
Definition tinyxml2.h:320
virtual int ItemSize() const =0
virtual void Free(void *)=0
MemPool()
Definition tinyxml2.h:322
virtual void SetTracked()=0
virtual ~MemPool()
Definition tinyxml2.h:323
Definition tinyxml2.h:141
void operator=(StrPair &other)
void SetStr(const char *str, int flags=0)
Definition tinyxml2.cpp:106
@ NEEDS_FLUSH
Definition tinyxml2.h:189
@ NEEDS_DELETE
Definition tinyxml2.h:190
void SetInternedStr(const char *str)
Definition tinyxml2.h:172
void TransferTo(StrPair *other)
Definition tinyxml2.cpp:72
void Set(char *start, char *end, int flags)
Definition tinyxml2.h:159
~StrPair()
Definition tinyxml2.cpp:66
StrPair()
Definition tinyxml2.h:156
void Reset()
Definition tinyxml2.cpp:95
char * _end
Definition tinyxml2.h:196
char * ParseName(char *in)
Definition tinyxml2.cpp:137
@ COMMENT
Definition tinyxml2.h:153
@ ATTRIBUTE_VALUE_LEAVE_ENTITIES
Definition tinyxml2.h:152
@ NEEDS_ENTITY_PROCESSING
Definition tinyxml2.h:144
@ ATTRIBUTE_VALUE
Definition tinyxml2.h:151
@ NEEDS_NEWLINE_NORMALIZATION
Definition tinyxml2.h:145
@ TEXT_ELEMENT_LEAVE_ENTITIES
Definition tinyxml2.h:149
@ ATTRIBUTE_NAME
Definition tinyxml2.h:150
@ TEXT_ELEMENT
Definition tinyxml2.h:148
@ COLLAPSE_WHITESPACE
Definition tinyxml2.h:146
StrPair(const StrPair &other)
bool Empty() const
Definition tinyxml2.h:168
char * _start
Definition tinyxml2.h:195
const char * GetStr()
Definition tinyxml2.cpp:186
char * ParseText(char *in, const char *endTag, int strFlags)
Definition tinyxml2.cpp:117
void CollapseWhitespace()
Definition tinyxml2.cpp:157
int _flags
Definition tinyxml2.h:194
Definition tinyxml2.h:1049
XMLError QueryFloatValue(float *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1222
virtual ~XMLAttribute()
Definition tinyxml2.h:1128
unsigned UnsignedValue() const
Query as an unsigned integer. See IntValue().
Definition tinyxml2.h:1073
float FloatValue() const
Query as a float. See IntValue().
Definition tinyxml2.h:1091
XMLError QueryDoubleValue(double *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1231
void operator=(const XMLAttribute &)
XMLAttribute * _next
Definition tinyxml2.h:1138
char * ParseDeep(char *p, bool processEntities)
Definition tinyxml2.cpp:1161
void SetAttribute(const char *value)
Set the attribute to a string value.
Definition tinyxml2.cpp:1240
XMLAttribute(const XMLAttribute &)
void SetName(const char *name)
Definition tinyxml2.cpp:1189
XMLError QueryUnsignedValue(unsigned int *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1204
double DoubleValue() const
Query as a double. See IntValue().
Definition tinyxml2.h:1085
const char * Name() const
The name of the attribute.
Definition tinyxml2.cpp:1151
XMLError QueryBoolValue(bool *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1213
XMLError QueryIntValue(int *value) const
Definition tinyxml2.cpp:1195
@ BUF_SIZE
Definition tinyxml2.h:1125
StrPair _name
Definition tinyxml2.h:1136
bool BoolValue() const
Query as a boolean. See IntValue().
Definition tinyxml2.h:1079
const XMLAttribute * Next() const
The next attribute in the list.
Definition tinyxml2.h:1059
const char * Value() const
The value of the attribute.
Definition tinyxml2.cpp:1156
StrPair _value
Definition tinyxml2.h:1137
MemPool * _memPool
Definition tinyxml2.h:1139
friend class XMLElement
Definition tinyxml2.h:1050
int IntValue() const
Definition tinyxml2.h:1067
XMLAttribute()
Definition tinyxml2.h:1127
XMLConstHandle(const XMLNode *node)
Definition tinyxml2.h:1843
const XMLText * ToText() const
Definition tinyxml2.h:1890
XMLConstHandle & operator=(const XMLConstHandle &ref)
Definition tinyxml2.h:1853
const XMLElement * ToElement() const
Definition tinyxml2.h:1887
XMLConstHandle(const XMLConstHandle &ref)
Definition tinyxml2.h:1849
const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:1893
const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:1896
const XMLConstHandle NextSiblingElement(const char *_value=0) const
Definition tinyxml2.h:1879
XMLConstHandle(const XMLNode &node)
Definition tinyxml2.h:1846
const XMLConstHandle FirstChildElement(const char *value=0) const
Definition tinyxml2.h:1861
const XMLConstHandle LastChild() const
Definition tinyxml2.h:1864
const XMLNode * ToNode() const
Definition tinyxml2.h:1884
const XMLConstHandle PreviousSibling() const
Definition tinyxml2.h:1870
const XMLConstHandle PreviousSiblingElement(const char *_value=0) const
Definition tinyxml2.h:1873
const XMLNode * _node
Definition tinyxml2.h:1901
const XMLConstHandle LastChildElement(const char *_value=0) const
Definition tinyxml2.h:1867
const XMLConstHandle NextSibling() const
Definition tinyxml2.h:1876
const XMLConstHandle FirstChild() const
Definition tinyxml2.h:1858
Definition tinyxml2.h:983
XMLDeclaration & operator=(const XMLDeclaration &)
friend class XMLDocument
Definition tinyxml2.h:984
XMLDeclaration(const XMLDeclaration &)
virtual const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:989
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition tinyxml2.h:986
XMLDeclaration(XMLDocument *doc)
Definition tinyxml2.cpp:1052
Definition tinyxml2.h:1504
MemPoolT< sizeof(XMLAttribute) > _attributePool
Definition tinyxml2.h:1699
XMLElement * RootElement()
Definition tinyxml2.h:1585
void SetBOM(bool useBOM)
Definition tinyxml2.h:1578
XMLError Parse(const char *xml, size_t nBytes=(size_t)(-1))
Definition tinyxml2.cpp:1890
bool _writeBOM
Definition tinyxml2.h:1690
MemPoolT< sizeof(XMLElement) > _elementPool
Definition tinyxml2.h:1698
bool HasBOM() const
Definition tinyxml2.h:1573
bool Error() const
Return true if there was an error parsing the document.
Definition tinyxml2.h:1653
const char * _errorStr1
Definition tinyxml2.h:1694
const XMLElement * RootElement() const
Definition tinyxml2.h:1588
Whitespace _whitespace
Definition tinyxml2.h:1693
bool ProcessEntities() const
Definition tinyxml2.h:1563
XMLError _errorID
Definition tinyxml2.h:1692
const char * _errorStr2
Definition tinyxml2.h:1695
virtual bool ShallowEqual(const XMLNode *) const
Definition tinyxml2.h:1682
char * _charBuffer
Definition tinyxml2.h:1696
Whitespace WhitespaceMode() const
Definition tinyxml2.h:1566
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition tinyxml2.h:1511
const char * GetErrorStr1() const
Return a possibly helpful diagnostic location or string.
Definition tinyxml2.h:1663
bool _processEntities
Definition tinyxml2.h:1691
void operator=(const XMLDocument &)
MemPoolT< sizeof(XMLComment) > _commentPool
Definition tinyxml2.h:1701
friend class XMLElement
Definition tinyxml2.h:1505
virtual const XMLDocument * ToDocument() const
Definition tinyxml2.h:1514
const char * GetErrorStr2() const
Return a possibly helpful secondary diagnostic location or string.
Definition tinyxml2.h:1667
XMLDocument(const XMLDocument &)
static const char * _errorNames[XML_ERROR_COUNT]
Definition tinyxml2.h:1703
XMLDocument(bool processEntities=true, Whitespace=PRESERVE_WHITESPACE)
constructor
Definition tinyxml2.cpp:1679
virtual XMLNode * ShallowClone(XMLDocument *) const
Definition tinyxml2.h:1679
XMLError ErrorID() const
Return the errorID.
Definition tinyxml2.h:1657
MemPoolT< sizeof(XMLText) > _textPool
Definition tinyxml2.h:1700
Definition tinyxml2.h:1148
int QueryAttribute(const char *name, int *value) const
Definition tinyxml2.h:1294
bool BoolAttribute(const char *name) const
See IntAttribute().
Definition tinyxml2.h:1207
void SetAttribute(const char *name, const char *value)
Sets the named attribute to value.
Definition tinyxml2.h:1315
XMLError QueryBoolAttribute(const char *name, bool *value) const
See QueryIntAttribute().
Definition tinyxml2.h:1253
const XMLAttribute * FindAttribute(const char *name) const
Query a specific attribute in the list.
Definition tinyxml2.cpp:1302
int QueryAttribute(const char *name, unsigned int *value) const
Definition tinyxml2.h:1298
XMLElement(const XMLElement &)
void SetAttribute(const char *name, double value)
Sets the named attribute to value.
Definition tinyxml2.h:1335
XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
See QueryIntAttribute().
Definition tinyxml2.h:1245
unsigned UnsignedAttribute(const char *name) const
See IntAttribute().
Definition tinyxml2.h:1201
friend class XMLBase
Definition tinyxml2.h:1149
int QueryAttribute(const char *name, float *value) const
Definition tinyxml2.h:1310
const XMLAttribute * FirstAttribute() const
Return the first attribute in the list.
Definition tinyxml2.h:1351
friend class XMLDocument
Definition tinyxml2.h:1150
XMLElement(XMLDocument *doc)
Definition tinyxml2.cpp:1285
void SetAttribute(const char *name, float value)
Sets the named attribute to value.
Definition tinyxml2.h:1340
XMLError QueryDoubleAttribute(const char *name, double *value) const
See QueryIntAttribute().
Definition tinyxml2.h:1261
float FloatAttribute(const char *name) const
See IntAttribute().
Definition tinyxml2.h:1219
XMLAttribute * FindAttribute(const char *name)
Definition tinyxml2.h:1475
int QueryAttribute(const char *name, double *value) const
Definition tinyxml2.h:1306
double DoubleAttribute(const char *name) const
See IntAttribute().
Definition tinyxml2.h:1213
XMLError QueryIntAttribute(const char *name, int *value) const
Definition tinyxml2.h:1237
@ BUF_SIZE
Definition tinyxml2.h:1483
void SetName(const char *str, bool staticMem=false)
Set the name of the element.
Definition tinyxml2.h:1157
virtual const XMLElement * ToElement() const
Definition tinyxml2.h:1164
int QueryAttribute(const char *name, bool *value) const
Definition tinyxml2.h:1302
void SetAttribute(const char *name, bool value)
Sets the named attribute to value.
Definition tinyxml2.h:1330
void SetAttribute(const char *name, int value)
Sets the named attribute to value.
Definition tinyxml2.h:1320
@ OPEN
Definition tinyxml2.h:1458
@ CLOSING
Definition tinyxml2.h:1460
@ CLOSED
Definition tinyxml2.h:1459
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition tinyxml2.h:1161
const char * Name() const
Get the name of an element (which is the Value() of the node.).
Definition tinyxml2.h:1153
int ClosingType() const
Definition tinyxml2.h:1462
XMLAttribute * FindOrCreateAttribute(const char *name)
Definition tinyxml2.cpp:1452
XMLError QueryFloatAttribute(const char *name, float *value) const
See QueryIntAttribute().
Definition tinyxml2.h:1269
int IntAttribute(const char *name) const
Definition tinyxml2.h:1195
XMLAttribute * _rootAttribute
Definition tinyxml2.h:1488
int _closingType
Definition tinyxml2.h:1484
void SetAttribute(const char *name, unsigned value)
Sets the named attribute to value.
Definition tinyxml2.h:1325
void operator=(const XMLElement &)
XMLHandle PreviousSiblingElement(const char *_value=0)
Get the previous sibling element of this handle.
Definition tinyxml2.h:1798
XMLHandle LastChildElement(const char *_value=0)
Get the last child element of this handle.
Definition tinyxml2.h:1790
XMLHandle PreviousSibling()
Get the previous sibling of this handle.
Definition tinyxml2.h:1794
XMLHandle NextSiblingElement(const char *_value=0)
Get the next sibling element of this handle.
Definition tinyxml2.h:1806
XMLHandle FirstChild()
Get the first child of this handle.
Definition tinyxml2.h:1778
XMLNode * _node
Definition tinyxml2.h:1832
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
Definition tinyxml2.h:1811
XMLDeclaration * ToDeclaration()
Safe cast to XMLDeclaration. This can return null.
Definition tinyxml2.h:1827
XMLHandle FirstChildElement(const char *value=0)
Get the first child element of this handle.
Definition tinyxml2.h:1782
XMLHandle(XMLNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition tinyxml2.h:1760
XMLHandle LastChild()
Get the last child of this handle.
Definition tinyxml2.h:1786
XMLHandle & operator=(const XMLHandle &ref)
Assignment.
Definition tinyxml2.h:1772
XMLHandle(XMLNode &node)
Create a handle from a node.
Definition tinyxml2.h:1764
XMLHandle NextSibling()
Get the next sibling of this handle.
Definition tinyxml2.h:1802
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
Definition tinyxml2.h:1815
XMLText * ToText()
Safe cast to XMLText. This can return null.
Definition tinyxml2.h:1819
XMLUnknown * ToUnknown()
Safe cast to XMLUnknown. This can return null.
Definition tinyxml2.h:1823
XMLHandle(const XMLHandle &ref)
Copy constructor.
Definition tinyxml2.h:1768
Definition tinyxml2.h:636
const char * Value() const
Definition tinyxml2.cpp:645
virtual const XMLText * ToText() const
Definition tinyxml2.h:678
XMLNode * NextSibling()
Definition tinyxml2.h:781
XMLNode * _lastChild
Definition tinyxml2.h:880
void SetValue(const char *val, bool staticMem=false)
Definition tinyxml2.cpp:650
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition tinyxml2.h:655
void InsertChildPreamble(XMLNode *insertThis) const
Definition tinyxml2.cpp:936
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition tinyxml2.h:667
XMLNode * _parent
Definition tinyxml2.h:876
XMLElement * NextSiblingElement(const char *value=0)
Definition tinyxml2.h:788
XMLNode * _next
Definition tinyxml2.h:883
XMLNode(XMLDocument *)
Definition tinyxml2.cpp:627
XMLNode * FirstChild()
Definition tinyxml2.h:729
StrPair _value
Definition tinyxml2.h:877
XMLDocument * GetDocument()
Get the XMLDocument that owns this XMLNode.
Definition tinyxml2.h:646
const XMLNode * Parent() const
Get the parent of this node on the DOM.
Definition tinyxml2.h:711
MemPool * _memPool
Definition tinyxml2.h:886
friend class XMLDocument
Definition tinyxml2.h:637
const XMLElement * FirstChildElement(const char *value=0) const
Definition tinyxml2.cpp:796
XMLNode * LastChild()
Definition tinyxml2.h:747
XMLNode & operator=(const XMLNode &)
XMLNode * PreviousSibling()
Definition tinyxml2.h:765
virtual XMLComment * ToComment()
Safely cast to a Comment, or null.
Definition tinyxml2.h:659
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition tinyxml2.h:663
const XMLNode * LastChild() const
Get the last child node, or null if none exists.
Definition tinyxml2.h:743
const XMLDocument * GetDocument() const
Get the XMLDocument that owns this XMLNode.
Definition tinyxml2.h:642
virtual const XMLElement * ToElement() const
Definition tinyxml2.h:675
virtual char * ParseDeep(char *, StrPair *)
Definition tinyxml2.cpp:850
virtual bool ShallowEqual(const XMLNode *compare) const =0
virtual bool Accept(XMLVisitor *visitor) const =0
XMLDocument * _document
Definition tinyxml2.h:875
virtual XMLNode * ShallowClone(XMLDocument *document) const =0
const XMLNode * PreviousSibling() const
Get the previous (left) sibling node of this node.
Definition tinyxml2.h:761
virtual const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:687
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition tinyxml2.h:651
void Unlink(XMLNode *child)
Definition tinyxml2.cpp:674
XMLNode * _prev
Definition tinyxml2.h:882
XMLNode * _firstChild
Definition tinyxml2.h:879
XMLElement * PreviousSiblingElement(const char *value=0)
Definition tinyxml2.h:772
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition tinyxml2.h:671
static void DeleteNode(XMLNode *node)
Definition tinyxml2.cpp:926
virtual const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:690
const XMLNode * FirstChild() const
Get the first child node, or null if none exists.
Definition tinyxml2.h:725
friend class XMLElement
Definition tinyxml2.h:638
bool NoChildren() const
Returns true if this node has no children.
Definition tinyxml2.h:720
virtual const XMLDocument * ToDocument() const
Definition tinyxml2.h:684
XMLNode * Parent()
Definition tinyxml2.h:715
XMLNode * InsertEndChild(XMLNode *addThis)
Definition tinyxml2.cpp:704
XMLNode * LinkEndChild(XMLNode *addThis)
Definition tinyxml2.h:801
virtual const XMLComment * ToComment() const
Definition tinyxml2.h:681
XMLElement * LastChildElement(const char *value=0)
Definition tinyxml2.h:756
XMLElement * FirstChildElement(const char *value=0)
Definition tinyxml2.h:738
const XMLNode * NextSibling() const
Get the next (right) sibling node of this node.
Definition tinyxml2.h:777
Definition tinyxml2.h:1939
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:1985
int _depth
Definition tinyxml2.h:2039
DynArray< char, 20 > _buffer
Definition tinyxml2.h:2051
void ClearBuffer()
Definition tinyxml2.h:2016
int CStrSize() const
Definition tinyxml2.h:2009
bool _entityFlag[ENTITY_RANGE]
Definition tinyxml2.h:2048
virtual bool CompactMode(const XMLElement &)
Definition tinyxml2.h:2022
int _textDepth
Definition tinyxml2.h:2040
bool _processEntities
Definition tinyxml2.h:2041
void PrintString(const char *, bool restrictedEntitySet)
Definition tinyxml2.cpp:2053
@ BUF_SIZE
Definition tinyxml2.h:2046
@ ENTITY_RANGE
Definition tinyxml2.h:2045
bool _restrictedEntityFlag[ENTITY_RANGE]
Definition tinyxml2.h:2049
FILE * _fp
Definition tinyxml2.h:2038
bool _compactMode
Definition tinyxml2.h:2042
DynArray< const char *, 10 > _stack
Definition tinyxml2.h:2032
XMLPrinter(FILE *file=0, bool compact=false, int depth=0)
Definition tinyxml2.cpp:1977
bool _firstElement
Definition tinyxml2.h:2037
const char * CStr() const
Definition tinyxml2.h:2001
bool _elementJustOpened
Definition tinyxml2.h:2031
virtual ~XMLPrinter()
Definition tinyxml2.h:1948
Definition tinyxml2.h:907
friend class XMLBase
Definition tinyxml2.h:908
virtual const XMLText * ToText() const
Definition tinyxml2.h:916
friend class XMLDocument
Definition tinyxml2.h:909
virtual bool Accept(XMLVisitor *visitor) const
Definition tinyxml2.cpp:994
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition tinyxml2.h:913
bool _isCData
Definition tinyxml2.h:938
XMLText & operator=(const XMLText &)
bool CData() const
Returns true if this is a CDATA text element.
Definition tinyxml2.h:925
void SetCData(bool isCData)
Declare whether this should be CDATA or standard text.
Definition tinyxml2.h:921
XMLText(XMLDocument *doc)
Definition tinyxml2.h:934
virtual ~XMLText()
Definition tinyxml2.h:935
Definition tinyxml2.h:1016
friend class XMLDocument
Definition tinyxml2.h:1017
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition tinyxml2.h:1019
XMLUnknown(XMLDocument *doc)
Definition tinyxml2.cpp:1102
XMLUnknown(const XMLUnknown &)
virtual const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:1022
XMLUnknown & operator=(const XMLUnknown &)
Definition tinyxml2.h:534
static bool IsNameChar(unsigned char ch)
Definition tinyxml2.h:565
static const char * SkipWhiteSpace(const char *p)
Definition tinyxml2.h:536
static bool ToUnsigned(const char *str, unsigned *value)
Definition tinyxml2.cpp:492
static void ConvertUTF32ToUTF8(unsigned long input, char *output, int *length)
Definition tinyxml2.cpp:306
static bool IsWhiteSpace(char p)
Definition tinyxml2.h:550
static bool ToFloat(const char *str, float *value)
Definition tinyxml2.cpp:519
static void ToStr(int v, char *buffer, int bufferSize)
Definition tinyxml2.cpp:451
static const char * GetCharacterRef(const char *p, char *value, int *length)
Definition tinyxml2.cpp:355
static char * SkipWhiteSpace(char *p)
Definition tinyxml2.h:544
static bool IsUTF8Continuation(const char p)
Definition tinyxml2.h:588
static bool IsNameStartChar(unsigned char ch)
Definition tinyxml2.h:554
static bool StringEqual(const char *p, const char *q, int nChar=INT_MAX)
Definition tinyxml2.h:572
static bool ToInt(const char *str, int *value)
Definition tinyxml2.cpp:484
static bool ToDouble(const char *str, double *value)
Definition tinyxml2.cpp:527
static bool ToBool(const char *str, bool *value)
Definition tinyxml2.cpp:500
static const char * ReadBOM(const char *p, bool *hasBOM)
Definition tinyxml2.cpp:288
Definition tinyxml2.h:462
virtual bool Visit(const XMLUnknown &)
Visit an unknown node.
Definition tinyxml2.h:497
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:471
virtual ~XMLVisitor()
Definition tinyxml2.h:464
virtual bool VisitExit(const XMLElement &)
Visit an element.
Definition tinyxml2.h:480
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:467
virtual bool Visit(const XMLComment &)
Visit a comment node.
Definition tinyxml2.h:493
virtual bool Visit(const XMLDeclaration &)
Visit a declaration.
Definition tinyxml2.h:485
virtual bool Visit(const XMLText &)
Visit a text node.
Definition tinyxml2.h:489
virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
Visit an element.
Definition tinyxml2.h:476
Definition tinyxml2.cpp:48
XMLError
Definition tinyxml2.h:503
@ XML_ERROR_MISMATCHED_ELEMENT
Definition tinyxml2.h:521
@ XML_ERROR_EMPTY_DOCUMENT
Definition tinyxml2.h:520
@ XML_SUCCESS
Definition tinyxml2.h:504
@ XML_ERROR_ELEMENT_MISMATCH
Definition tinyxml2.h:511
@ XML_ERROR_PARSING_ATTRIBUTE
Definition tinyxml2.h:513
@ XML_ERROR_FILE_NOT_FOUND
Definition tinyxml2.h:508
@ XML_ERROR_IDENTIFYING_TAG
Definition tinyxml2.h:514
@ XML_ERROR_PARSING_TEXT
Definition tinyxml2.h:515
@ XML_ERROR_PARSING_COMMENT
Definition tinyxml2.h:517
@ XML_NO_TEXT_NODE
Definition tinyxml2.h:524
@ XML_ERROR_FILE_READ_ERROR
Definition tinyxml2.h:510
@ XML_ERROR_PARSING_UNKNOWN
Definition tinyxml2.h:519
@ XML_ERROR_PARSING_CDATA
Definition tinyxml2.h:516
@ XML_ERROR_COUNT
Definition tinyxml2.h:526
@ XML_NO_ATTRIBUTE
Definition tinyxml2.h:506
@ XML_NO_ERROR
Definition tinyxml2.h:505
@ XML_ERROR_PARSING_DECLARATION
Definition tinyxml2.h:518
@ XML_WRONG_ATTRIBUTE_TYPE
Definition tinyxml2.h:507
@ XML_ERROR_PARSING
Definition tinyxml2.h:522
@ XML_ERROR_PARSING_ELEMENT
Definition tinyxml2.h:512
@ XML_ERROR_FILE_COULD_NOT_BE_OPENED
Definition tinyxml2.h:509
@ XML_CAN_NOT_CONVERT_TEXT
Definition tinyxml2.h:523
Whitespace
Definition tinyxml2.h:1492
@ PRESERVE_WHITESPACE
Definition tinyxml2.h:1493
@ COLLAPSE_WHITESPACE
Definition tinyxml2.h:1494
Definition tinyxml2.h:433
Chunk chunk[COUNT]
Definition tinyxml2.h:434
#define TIXMLASSERT(x)
Definition tinyxml2.h:84
static const int TIXML2_PATCH_VERSION
Definition tinyxml2.h:121
static const int TIXML2_MAJOR_VERSION
Definition tinyxml2.h:119
#define TINYXML2_LIB
Definition tinyxml2.h:68
static const int TIXML2_MINOR_VERSION
Definition tinyxml2.h:120
#define TIXML_SNPRINTF
Definition tinyxml2.h:112
Definition tinyxml2.h:429
char mem[SIZE]
Definition tinyxml2.h:431
Chunk * next
Definition tinyxml2.h:430