20#ifndef TINYXML2_INCLUDED
21#define TINYXML2_INCLUDED
23#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
49#if defined( _DEBUG ) || defined( DEBUG ) || defined (__DEBUG__)
57# pragma warning(disable: 4251)
61# ifdef TINYXML2_EXPORT
62# define TINYXML2_LIB __declspec(dllexport)
63# elif defined(TINYXML2_IMPORT)
64# define TINYXML2_LIB __declspec(dllimport)
76# define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); }
77# elif defined (ANDROID_NDK)
78# include <android/log.h>
79# define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
82# define TIXMLASSERT assert
85# define TIXMLASSERT( x ) {}
89#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)
98inline int TIXML_SNPRINTF(
char* buffer,
size_t size,
const char* format, ...)
101 va_start(va, format);
102 int result = vsnprintf_s(buffer, size, _TRUNCATE, format, va);
106#define TIXML_SSCANF sscanf_s
108#define TIXML_SNPRINTF _snprintf
109#define TIXML_SSCANF sscanf
113#define TIXML_SNPRINTF snprintf
114#define TIXML_SSCANF sscanf
131 class XMLDeclaration;
160 void Set(
char* start,
char* end,
int flags) {
175 _start =
const_cast<char*
>(str);
178 void SetStr(
const char* str,
int flags = 0);
180 char*
ParseText(
char* in,
const char* endTag,
int strFlags);
209 template <
class T,
int INIT>
298 int newAllocated = cap * 2;
299 T* newMem =
new T[newAllocated];
372 for (
int i = 0; i<
COUNT - 1; ++i) {
378 void* result =
_root;
397 memset(chunk, 0xfe,
sizeof(
Chunk));
403 printf(
"Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
563 return ch ==
':' || ch ==
'_';
573 inline static bool StringEqual(
const char*
p,
const char* q,
int nChar = INT_MAX) {
578 while (*
p && *q && *
p == *q && n<nChar) {
583 if ((n == nChar) || (*
p == 0 && *q == 0)) {
590 return (
p & 0x80) != 0;
593 static const char*
ReadBOM(
const char*
p,
bool* hasBOM);
596 static const char*
GetCharacterRef(
const char*
p,
char* value,
int* length);
600 static void ToStr(
int v,
char* buffer,
int bufferSize);
601 static void ToStr(
unsigned v,
char* buffer,
int bufferSize);
602 static void ToStr(
bool v,
char* buffer,
int bufferSize);
603 static void ToStr(
float v,
char* buffer,
int bufferSize);
604 static void ToStr(
double v,
char* buffer,
int bufferSize);
607 static bool ToInt(
const char* str,
int* value);
608 static bool ToUnsigned(
const char* str,
unsigned* value);
609 static bool ToBool(
const char* str,
bool* value);
610 static bool ToFloat(
const char* str,
float* value);
611 static bool ToDouble(
const char* str,
double* value);
704 const char* Value()
const;
709 void SetValue(
const char* val,
bool staticMem =
false);
737 const XMLElement* FirstChildElement(
const char* value = 0)
const;
740 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->FirstChildElement(value));
749 return const_cast<XMLNode*
>(
const_cast<const XMLNode*
>(
this)->LastChild());
755 const XMLElement* LastChildElement(
const char* value = 0)
const;
758 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->LastChildElement(value));
771 const XMLElement* PreviousSiblingElement(
const char* value = 0)
const;
774 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->PreviousSiblingElement(value));
787 const XMLElement* NextSiblingElement(
const char* value = 0)
const;
790 return const_cast<XMLElement*
>(
const_cast<const XMLNode*
>(
this)->NextSiblingElement(value));
803 return InsertEndChild(addThis);
826 void DeleteChildren();
831 void DeleteChild(
XMLNode* node);
870 virtual char* ParseDeep(
char*,
StrPair*);
889 static void DeleteNode(
XMLNode* node);
890 void InsertChildPreamble(
XMLNode* insertThis)
const;
909 friend class XMLBase;
912 virtual bool Accept(
XMLVisitor* visitor)
const;
930 char* ParseDeep(
char*,
StrPair* endTag);
932 virtual bool ShallowEqual(
const XMLNode* compare)
const;
958 virtual bool Accept(
XMLVisitor* visitor)
const;
960 char* ParseDeep(
char*,
StrPair* endTag);
962 virtual bool ShallowEqual(
const XMLNode* compare)
const;
994 virtual bool Accept(
XMLVisitor* visitor)
const;
996 char* ParseDeep(
char*,
StrPair* endTag);
998 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1027 virtual bool Accept(
XMLVisitor* visitor)
const;
1029 char* ParseDeep(
char*,
StrPair* endTag);
1031 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1054 const char* Name()
const;
1057 const char* Value()
const;
1076 QueryUnsignedValue(&i);
1088 QueryDoubleValue(&d);
1094 QueryFloatValue(&f);
1102 XMLError QueryIntValue(
int* value)
const;
1104 XMLError QueryUnsignedValue(
unsigned int* value)
const;
1106 XMLError QueryBoolValue(
bool* value)
const;
1108 XMLError QueryDoubleValue(
double* value)
const;
1110 XMLError QueryFloatValue(
float* value)
const;
1113 void SetAttribute(
const char* value);
1115 void SetAttribute(
int value);
1117 void SetAttribute(
unsigned value);
1119 void SetAttribute(
bool value);
1121 void SetAttribute(
double value);
1123 void SetAttribute(
float value);
1126 enum { BUF_SIZE = 200 };
1133 void SetName(
const char* name);
1135 char* ParseDeep(
char*
p,
bool processEntities);
1150 friend class XMLBase;
1158 void SetName(
const char* str,
bool staticMem =
false) {
1159 SetValue(str, staticMem);
1168 virtual bool Accept(
XMLVisitor* visitor)
const;
1189 const char* Attribute(
const char* name,
const char* value = 0)
const;
1198 QueryIntAttribute(name, &i);
1204 QueryUnsignedAttribute(name, &i);
1210 QueryBoolAttribute(name, &b);
1216 QueryDoubleAttribute(name, &d);
1222 QueryFloatAttribute(name, &f);
1296 return QueryIntAttribute(name, value);
1300 return QueryUnsignedAttribute(name, value);
1304 return QueryBoolAttribute(name, value);
1308 return QueryDoubleAttribute(name, value);
1312 return QueryFloatAttribute(name, value);
1349 void DeleteAttribute(
const char* name);
1353 return _rootAttribute;
1356 const XMLAttribute* FindAttribute(
const char* name)
const;
1381 const char* GetText()
const;
1413 void SetText(
const char* inText);
1415 void SetText(
int value);
1417 void SetText(
unsigned value);
1419 void SetText(
bool value);
1421 void SetText(
double value);
1423 void SetText(
float value);
1447 XMLError QueryIntText(
int* ival)
const;
1449 XMLError QueryUnsignedText(
unsigned* uval)
const;
1451 XMLError QueryBoolText(
bool* bval)
const;
1453 XMLError QueryDoubleText(
double* dval)
const;
1455 XMLError QueryFloatText(
float* fval)
const;
1464 return _closingType;
1466 char* ParseDeep(
char*
p,
StrPair* endTag);
1468 virtual bool ShallowEqual(
const XMLNode* compare)
const;
1481 char* ParseAttributes(
char*
p);
1484 enum { BUF_SIZE = 200 };
1528 XMLError Parse(
const char* xml,
size_t nBytes = (
size_t)(-1));
1535 XMLError LoadFile(
const char* filename);
1554 XMLError SaveFile(
const char* filename,
bool compact =
false);
1562 XMLError SaveFile(FILE* fp,
bool compact =
false);
1565 return _processEntities;
1587 return FirstChildElement();
1590 return FirstChildElement();
1607 virtual bool Accept(
XMLVisitor* visitor)
const;
1626 XMLText* NewText(
const char* text);
1649 void DeleteNode(
XMLNode* node);
1651 void SetError(
XMLError error,
const char* str1,
const char* str2);
1661 const char* ErrorName()
const;
1672 void PrintError()
const;
1678 char* Identify(
char*
p,
XMLNode** node);
1780 return XMLHandle(_node ? _node->FirstChild() : 0);
1784 return XMLHandle(_node ? _node->FirstChildElement(value) : 0);
1788 return XMLHandle(_node ? _node->LastChild() : 0);
1792 return XMLHandle(_node ? _node->LastChildElement(_value) : 0);
1796 return XMLHandle(_node ? _node->PreviousSibling() : 0);
1800 return XMLHandle(_node ? _node->PreviousSiblingElement(_value) : 0);
1804 return XMLHandle(_node ? _node->NextSibling() : 0);
1808 return XMLHandle(_node ? _node->NextSiblingElement(_value) : 0);
1817 return ((_node == 0) ? 0 : _node->ToElement());
1821 return ((_node == 0) ? 0 : _node->ToText());
1825 return ((_node == 0) ? 0 : _node->ToUnknown());
1829 return ((_node == 0) ? 0 : _node->ToDeclaration());
1863 return XMLConstHandle(_node ? _node->FirstChildElement(value) : 0);
1869 return XMLConstHandle(_node ? _node->LastChildElement(_value) : 0);
1875 return XMLConstHandle(_node ? _node->PreviousSiblingElement(_value) : 0);
1881 return XMLConstHandle(_node ? _node->NextSiblingElement(_value) : 0);
1889 return ((_node == 0) ? 0 : _node->ToElement());
1892 return ((_node == 0) ? 0 : _node->ToText());
1895 return ((_node == 0) ? 0 : _node->ToUnknown());
1898 return ((_node == 0) ? 0 : _node->ToDeclaration());
1948 XMLPrinter(FILE* file = 0,
bool compact =
false,
int depth = 0);
1952 void PushHeader(
bool writeBOM,
bool writeDeclaration);
1956 void OpenElement(
const char* name,
bool compactMode =
false);
1958 void PushAttribute(
const char* name,
const char* value);
1959 void PushAttribute(
const char* name,
int value);
1960 void PushAttribute(
const char* name,
unsigned value);
1961 void PushAttribute(
const char* name,
bool value);
1962 void PushAttribute(
const char* name,
double value);
1964 virtual void CloseElement(
bool compactMode =
false);
1967 void PushText(
const char* text,
bool cdata =
false);
1969 void PushText(
int value);
1971 void PushText(
unsigned value);
1973 void PushText(
bool value);
1975 void PushText(
float value);
1977 void PushText(
double value);
1980 void PushComment(
const char* comment);
1982 void PushDeclaration(
const char* value);
1983 void PushUnknown(
const char* value);
1991 virtual bool VisitExit(
const XMLElement& element);
1993 virtual bool Visit(
const XMLText& text);
1994 virtual bool Visit(
const XMLComment& comment);
1996 virtual bool Visit(
const XMLUnknown& unknown);
2003 return _buffer.Mem();
2011 return _buffer.Size();
2028 virtual void PrintSpace(
int depth);
2029 void Print(
const char* format, ...);
2031 void SealElementIfJustOpened();
2036 void PrintString(
const char*,
bool restrictedEntitySet);
2049 bool _entityFlag[ENTITY_RANGE];
2050 bool _restrictedEntityFlag[ENTITY_RANGE];
2058#if defined(_MSC_VER)
2059# pragma warning(pop)
Definition tinyxml2.h:211
T Pop()
Definition tinyxml2.h:244
T * _mem
Definition tinyxml2.h:309
T & operator[](int i)
Definition tinyxml2.h:258
void Push(T t)
Definition tinyxml2.h:229
T * Mem()
Definition tinyxml2.h:286
T * PushArr(int count)
Definition tinyxml2.h:235
void EnsureCapacity(int cap)
Definition tinyxml2.h:294
int Size() const
Definition tinyxml2.h:273
int Capacity() const
Definition tinyxml2.h:278
const T * Mem() const
Definition tinyxml2.h:282
int _size
Definition tinyxml2.h:312
const T & operator[](int i) const
Definition tinyxml2.h:263
const T & PeekTop() const
Definition tinyxml2.h:268
int _allocated
Definition tinyxml2.h:311
void Clear()
Definition tinyxml2.h:225
void PopArr(int count)
Definition tinyxml2.h:249
T _pool[INIT]
Definition tinyxml2.h:310
~DynArray()
Definition tinyxml2.h:219
void operator=(const DynArray &)
DynArray(const DynArray &)
DynArray()
Definition tinyxml2.h:213
bool Empty() const
Definition tinyxml2.h:254
Definition tinyxml2.h:339
@ COUNT
Definition tinyxml2.h:424
void Trace(const char *name)
Definition tinyxml2.h:402
virtual int ItemSize() const
Definition tinyxml2.h:359
int _nAllocs
Definition tinyxml2.h:441
int Untracked() const
Definition tinyxml2.h:411
void Clear()
Definition tinyxml2.h:346
virtual void Free(void *mem)
Definition tinyxml2.h:390
void operator=(const MemPoolT &)
void SetTracked()
Definition tinyxml2.h:407
MemPoolT()
Definition tinyxml2.h:341
int _maxAllocs
Definition tinyxml2.h:442
int _nUntracked
Definition tinyxml2.h:443
int CurrentAllocs() const
Definition tinyxml2.h:362
virtual void * Alloc()
Definition tinyxml2.h:366
~MemPoolT()
Definition tinyxml2.h:342
int _currentAllocs
Definition tinyxml2.h:440
Chunk * _root
Definition tinyxml2.h:438
MemPoolT(const MemPoolT &)
DynArray< Block *, 10 > _blockPtrs
Definition tinyxml2.h:437
Definition tinyxml2.h:321
virtual int ItemSize() const =0
virtual void Free(void *)=0
MemPool()
Definition tinyxml2.h:323
virtual void SetTracked()=0
virtual ~MemPool()
Definition tinyxml2.h:324
Definition tinyxml2.h:142
@ COMMENT
Definition tinyxml2.h:154
@ ATTRIBUTE_VALUE_LEAVE_ENTITIES
Definition tinyxml2.h:153
@ NEEDS_ENTITY_PROCESSING
Definition tinyxml2.h:145
@ ATTRIBUTE_VALUE
Definition tinyxml2.h:152
@ NEEDS_NEWLINE_NORMALIZATION
Definition tinyxml2.h:146
@ TEXT_ELEMENT_LEAVE_ENTITIES
Definition tinyxml2.h:150
@ ATTRIBUTE_NAME
Definition tinyxml2.h:151
@ TEXT_ELEMENT
Definition tinyxml2.h:149
@ COLLAPSE_WHITESPACE
Definition tinyxml2.h:147
void operator=(StrPair &other)
void SetStr(const char *str, int flags=0)
Definition tinyxml2.cpp:107
void SetInternedStr(const char *str)
Definition tinyxml2.h:173
void TransferTo(StrPair *other)
Definition tinyxml2.cpp:73
@ NEEDS_FLUSH
Definition tinyxml2.h:190
@ NEEDS_DELETE
Definition tinyxml2.h:191
void Set(char *start, char *end, int flags)
Definition tinyxml2.h:160
~StrPair()
Definition tinyxml2.cpp:67
StrPair()
Definition tinyxml2.h:157
void Reset()
Definition tinyxml2.cpp:96
char * _end
Definition tinyxml2.h:197
char * ParseName(char *in)
Definition tinyxml2.cpp:138
StrPair(const StrPair &other)
bool Empty() const
Definition tinyxml2.h:169
char * _start
Definition tinyxml2.h:196
const char * GetStr()
Definition tinyxml2.cpp:187
char * ParseText(char *in, const char *endTag, int strFlags)
Definition tinyxml2.cpp:118
void CollapseWhitespace()
Definition tinyxml2.cpp:158
int _flags
Definition tinyxml2.h:195
Definition tinyxml2.h:1050
XMLError QueryFloatValue(float *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1223
virtual ~XMLAttribute()
Definition tinyxml2.h:1129
unsigned UnsignedValue() const
Query as an unsigned integer. See IntValue()
Definition tinyxml2.h:1074
float FloatValue() const
Query as a float. See IntValue()
Definition tinyxml2.h:1092
XMLError QueryDoubleValue(double *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1232
void operator=(const XMLAttribute &)
XMLAttribute * _next
Definition tinyxml2.h:1139
void SetAttribute(const char *value)
Set the attribute to a string value.
Definition tinyxml2.cpp:1241
XMLAttribute(const XMLAttribute &)
XMLError QueryUnsignedValue(unsigned int *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1205
double DoubleValue() const
Query as a double. See IntValue()
Definition tinyxml2.h:1086
XMLError QueryBoolValue(bool *value) const
See QueryIntValue.
Definition tinyxml2.cpp:1214
XMLError QueryIntValue(int *value) const
Definition tinyxml2.cpp:1196
StrPair _name
Definition tinyxml2.h:1137
bool BoolValue() const
Query as a boolean. See IntValue()
Definition tinyxml2.h:1080
const XMLAttribute * Next() const
The next attribute in the list.
Definition tinyxml2.h:1060
StrPair _value
Definition tinyxml2.h:1138
MemPool * _memPool
Definition tinyxml2.h:1140
int IntValue() const
Definition tinyxml2.h:1068
XMLAttribute()
Definition tinyxml2.h:1128
Definition tinyxml2.h:1842
XMLConstHandle(const XMLNode *node)
Definition tinyxml2.h:1844
const XMLText * ToText() const
Definition tinyxml2.h:1891
XMLConstHandle & operator=(const XMLConstHandle &ref)
Definition tinyxml2.h:1854
const XMLElement * ToElement() const
Definition tinyxml2.h:1888
XMLConstHandle(const XMLConstHandle &ref)
Definition tinyxml2.h:1850
const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:1894
const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:1897
const XMLConstHandle NextSiblingElement(const char *_value=0) const
Definition tinyxml2.h:1880
XMLConstHandle(const XMLNode &node)
Definition tinyxml2.h:1847
const XMLConstHandle FirstChildElement(const char *value=0) const
Definition tinyxml2.h:1862
const XMLConstHandle LastChild() const
Definition tinyxml2.h:1865
const XMLNode * ToNode() const
Definition tinyxml2.h:1885
const XMLConstHandle PreviousSibling() const
Definition tinyxml2.h:1871
const XMLConstHandle PreviousSiblingElement(const char *_value=0) const
Definition tinyxml2.h:1874
const XMLNode * _node
Definition tinyxml2.h:1902
const XMLConstHandle LastChildElement(const char *_value=0) const
Definition tinyxml2.h:1868
const XMLConstHandle NextSibling() const
Definition tinyxml2.h:1877
const XMLConstHandle FirstChild() const
Definition tinyxml2.h:1859
Definition tinyxml2.h:984
XMLDeclaration & operator=(const XMLDeclaration &)
XMLDeclaration(const XMLDeclaration &)
virtual const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:990
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition tinyxml2.h:987
Definition tinyxml2.h:1505
XMLElement * RootElement()
Definition tinyxml2.h:1586
void SetBOM(bool useBOM)
Definition tinyxml2.h:1579
bool _writeBOM
Definition tinyxml2.h:1691
bool HasBOM() const
Definition tinyxml2.h:1574
bool Error() const
Return true if there was an error parsing the document.
Definition tinyxml2.h:1654
const char * _errorStr1
Definition tinyxml2.h:1695
const XMLElement * RootElement() const
Definition tinyxml2.h:1589
Whitespace _whitespace
Definition tinyxml2.h:1694
bool ProcessEntities() const
Definition tinyxml2.h:1564
XMLError _errorID
Definition tinyxml2.h:1693
const char * _errorStr2
Definition tinyxml2.h:1696
virtual bool ShallowEqual(const XMLNode *) const
Definition tinyxml2.h:1683
char * _charBuffer
Definition tinyxml2.h:1697
Whitespace WhitespaceMode() const
Definition tinyxml2.h:1567
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition tinyxml2.h:1512
const char * GetErrorStr1() const
Return a possibly helpful diagnostic location or string.
Definition tinyxml2.h:1664
bool _processEntities
Definition tinyxml2.h:1692
void operator=(const XMLDocument &)
virtual const XMLDocument * ToDocument() const
Definition tinyxml2.h:1515
const char * GetErrorStr2() const
Return a possibly helpful secondary diagnostic location or string.
Definition tinyxml2.h:1668
XMLDocument(const XMLDocument &)
virtual XMLNode * ShallowClone(XMLDocument *) const
Definition tinyxml2.h:1680
XMLError ErrorID() const
Return the errorID.
Definition tinyxml2.h:1658
Definition tinyxml2.h:1149
int QueryAttribute(const char *name, int *value) const
Definition tinyxml2.h:1295
@ OPEN
Definition tinyxml2.h:1459
@ CLOSED
Definition tinyxml2.h:1460
bool BoolAttribute(const char *name) const
See IntAttribute()
Definition tinyxml2.h:1208
void SetAttribute(const char *name, const char *value)
Sets the named attribute to value.
Definition tinyxml2.h:1316
XMLError QueryBoolAttribute(const char *name, bool *value) const
See QueryIntAttribute()
Definition tinyxml2.h:1254
int QueryAttribute(const char *name, unsigned int *value) const
Definition tinyxml2.h:1299
XMLElement(const XMLElement &)
void SetAttribute(const char *name, double value)
Sets the named attribute to value.
Definition tinyxml2.h:1336
XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
See QueryIntAttribute()
Definition tinyxml2.h:1246
unsigned UnsignedAttribute(const char *name) const
See IntAttribute()
Definition tinyxml2.h:1202
int QueryAttribute(const char *name, float *value) const
Definition tinyxml2.h:1311
const XMLAttribute * FirstAttribute() const
Return the first attribute in the list.
Definition tinyxml2.h:1352
void SetAttribute(const char *name, float value)
Sets the named attribute to value.
Definition tinyxml2.h:1341
XMLError QueryDoubleAttribute(const char *name, double *value) const
See QueryIntAttribute()
Definition tinyxml2.h:1262
float FloatAttribute(const char *name) const
See IntAttribute()
Definition tinyxml2.h:1220
XMLAttribute * FindAttribute(const char *name)
Definition tinyxml2.h:1476
int QueryAttribute(const char *name, double *value) const
Definition tinyxml2.h:1307
double DoubleAttribute(const char *name) const
See IntAttribute()
Definition tinyxml2.h:1214
XMLError QueryIntAttribute(const char *name, int *value) const
Definition tinyxml2.h:1238
void SetName(const char *str, bool staticMem=false)
Set the name of the element.
Definition tinyxml2.h:1158
virtual const XMLElement * ToElement() const
Definition tinyxml2.h:1165
int QueryAttribute(const char *name, bool *value) const
Definition tinyxml2.h:1303
void SetAttribute(const char *name, bool value)
Sets the named attribute to value.
Definition tinyxml2.h:1331
void SetAttribute(const char *name, int value)
Sets the named attribute to value.
Definition tinyxml2.h:1321
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition tinyxml2.h:1162
const char * Name() const
Get the name of an element (which is the Value() of the node.)
Definition tinyxml2.h:1154
int ClosingType() const
Definition tinyxml2.h:1463
XMLError QueryFloatAttribute(const char *name, float *value) const
See QueryIntAttribute()
Definition tinyxml2.h:1270
int IntAttribute(const char *name) const
Definition tinyxml2.h:1196
XMLAttribute * _rootAttribute
Definition tinyxml2.h:1489
int _closingType
Definition tinyxml2.h:1485
void SetAttribute(const char *name, unsigned value)
Sets the named attribute to value.
Definition tinyxml2.h:1326
void operator=(const XMLElement &)
Definition tinyxml2.h:1758
XMLHandle PreviousSiblingElement(const char *_value=0)
Get the previous sibling element of this handle.
Definition tinyxml2.h:1799
XMLHandle LastChildElement(const char *_value=0)
Get the last child element of this handle.
Definition tinyxml2.h:1791
XMLHandle PreviousSibling()
Get the previous sibling of this handle.
Definition tinyxml2.h:1795
XMLHandle NextSiblingElement(const char *_value=0)
Get the next sibling element of this handle.
Definition tinyxml2.h:1807
XMLHandle FirstChild()
Get the first child of this handle.
Definition tinyxml2.h:1779
XMLNode * _node
Definition tinyxml2.h:1833
XMLNode * ToNode()
Safe cast to XMLNode. This can return null.
Definition tinyxml2.h:1812
XMLDeclaration * ToDeclaration()
Safe cast to XMLDeclaration. This can return null.
Definition tinyxml2.h:1828
XMLHandle FirstChildElement(const char *value=0)
Get the first child element of this handle.
Definition tinyxml2.h:1783
XMLHandle(XMLNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition tinyxml2.h:1761
XMLHandle LastChild()
Get the last child of this handle.
Definition tinyxml2.h:1787
XMLHandle & operator=(const XMLHandle &ref)
Assignment.
Definition tinyxml2.h:1773
XMLHandle(XMLNode &node)
Create a handle from a node.
Definition tinyxml2.h:1765
XMLHandle NextSibling()
Get the next sibling of this handle.
Definition tinyxml2.h:1803
XMLElement * ToElement()
Safe cast to XMLElement. This can return null.
Definition tinyxml2.h:1816
XMLText * ToText()
Safe cast to XMLText. This can return null.
Definition tinyxml2.h:1820
XMLUnknown * ToUnknown()
Safe cast to XMLUnknown. This can return null.
Definition tinyxml2.h:1824
XMLHandle(const XMLHandle &ref)
Copy constructor.
Definition tinyxml2.h:1769
Definition tinyxml2.h:637
virtual const XMLText * ToText() const
Definition tinyxml2.h:679
XMLNode * NextSibling()
Definition tinyxml2.h:782
XMLNode * _lastChild
Definition tinyxml2.h:881
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition tinyxml2.h:656
virtual XMLDeclaration * ToDeclaration()
Safely cast to a Declaration, or null.
Definition tinyxml2.h:668
XMLNode * _parent
Definition tinyxml2.h:877
XMLElement * NextSiblingElement(const char *value=0)
Definition tinyxml2.h:789
XMLNode * _next
Definition tinyxml2.h:884
XMLNode * FirstChild()
Definition tinyxml2.h:730
StrPair _value
Definition tinyxml2.h:878
XMLDocument * GetDocument()
Get the XMLDocument that owns this XMLNode.
Definition tinyxml2.h:647
const XMLNode * Parent() const
Get the parent of this node on the DOM.
Definition tinyxml2.h:712
MemPool * _memPool
Definition tinyxml2.h:887
XMLNode * LastChild()
Definition tinyxml2.h:748
XMLNode & operator=(const XMLNode &)
XMLNode * PreviousSibling()
Definition tinyxml2.h:766
virtual XMLComment * ToComment()
Safely cast to a Comment, or null.
Definition tinyxml2.h:660
virtual XMLDocument * ToDocument()
Safely cast to a Document, or null.
Definition tinyxml2.h:664
const XMLNode * LastChild() const
Get the last child node, or null if none exists.
Definition tinyxml2.h:744
const XMLDocument * GetDocument() const
Get the XMLDocument that owns this XMLNode.
Definition tinyxml2.h:643
virtual const XMLElement * ToElement() const
Definition tinyxml2.h:676
virtual bool ShallowEqual(const XMLNode *compare) const =0
virtual bool Accept(XMLVisitor *visitor) const =0
XMLDocument * _document
Definition tinyxml2.h:876
virtual XMLNode * ShallowClone(XMLDocument *document) const =0
const XMLNode * PreviousSibling() const
Get the previous (left) sibling node of this node.
Definition tinyxml2.h:762
virtual const XMLDeclaration * ToDeclaration() const
Definition tinyxml2.h:688
virtual XMLElement * ToElement()
Safely cast to an Element, or null.
Definition tinyxml2.h:652
XMLNode * _prev
Definition tinyxml2.h:883
XMLNode * _firstChild
Definition tinyxml2.h:880
XMLElement * PreviousSiblingElement(const char *value=0)
Definition tinyxml2.h:773
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition tinyxml2.h:672
virtual const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:691
const XMLNode * FirstChild() const
Get the first child node, or null if none exists.
Definition tinyxml2.h:726
bool NoChildren() const
Returns true if this node has no children.
Definition tinyxml2.h:721
virtual const XMLDocument * ToDocument() const
Definition tinyxml2.h:685
XMLNode * Parent()
Definition tinyxml2.h:716
XMLNode * LinkEndChild(XMLNode *addThis)
Definition tinyxml2.h:802
virtual const XMLComment * ToComment() const
Definition tinyxml2.h:682
XMLElement * LastChildElement(const char *value=0)
Definition tinyxml2.h:757
XMLElement * FirstChildElement(const char *value=0)
Definition tinyxml2.h:739
const XMLNode * NextSibling() const
Get the next (right) sibling node of this node.
Definition tinyxml2.h:778
Definition tinyxml2.h:1940
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:1986
int _depth
Definition tinyxml2.h:2040
DynArray< char, 20 > _buffer
Definition tinyxml2.h:2052
void ClearBuffer()
Definition tinyxml2.h:2017
int CStrSize() const
Definition tinyxml2.h:2010
virtual bool CompactMode(const XMLElement &)
Definition tinyxml2.h:2023
int _textDepth
Definition tinyxml2.h:2041
bool _processEntities
Definition tinyxml2.h:2042
FILE * _fp
Definition tinyxml2.h:2039
bool _compactMode
Definition tinyxml2.h:2043
DynArray< const char *, 10 > _stack
Definition tinyxml2.h:2033
bool _firstElement
Definition tinyxml2.h:2038
const char * CStr() const
Definition tinyxml2.h:2002
bool _elementJustOpened
Definition tinyxml2.h:2032
virtual ~XMLPrinter()
Definition tinyxml2.h:1949
Definition tinyxml2.h:908
virtual const XMLText * ToText() const
Definition tinyxml2.h:917
virtual XMLText * ToText()
Safely cast to Text, or null.
Definition tinyxml2.h:914
bool _isCData
Definition tinyxml2.h:939
XMLText & operator=(const XMLText &)
bool CData() const
Returns true if this is a CDATA text element.
Definition tinyxml2.h:926
void SetCData(bool isCData)
Declare whether this should be CDATA or standard text.
Definition tinyxml2.h:922
XMLText(XMLDocument *doc)
Definition tinyxml2.h:935
virtual ~XMLText()
Definition tinyxml2.h:936
Definition tinyxml2.h:1017
virtual XMLUnknown * ToUnknown()
Safely cast to an Unknown, or null.
Definition tinyxml2.h:1020
XMLUnknown(const XMLUnknown &)
virtual const XMLUnknown * ToUnknown() const
Definition tinyxml2.h:1023
XMLUnknown & operator=(const XMLUnknown &)
Definition tinyxml2.h:535
static bool IsNameChar(unsigned char ch)
Definition tinyxml2.h:566
static const char * SkipWhiteSpace(const char *p)
Definition tinyxml2.h:537
static bool ToUnsigned(const char *str, unsigned *value)
Definition tinyxml2.cpp:493
static void ConvertUTF32ToUTF8(unsigned long input, char *output, int *length)
Definition tinyxml2.cpp:307
static bool IsWhiteSpace(char p)
Definition tinyxml2.h:551
static bool ToFloat(const char *str, float *value)
Definition tinyxml2.cpp:520
static void ToStr(int v, char *buffer, int bufferSize)
Definition tinyxml2.cpp:452
static const char * GetCharacterRef(const char *p, char *value, int *length)
Definition tinyxml2.cpp:356
static char * SkipWhiteSpace(char *p)
Definition tinyxml2.h:545
static bool IsUTF8Continuation(const char p)
Definition tinyxml2.h:589
static bool IsNameStartChar(unsigned char ch)
Definition tinyxml2.h:555
static bool StringEqual(const char *p, const char *q, int nChar=INT_MAX)
Definition tinyxml2.h:573
static bool ToInt(const char *str, int *value)
Definition tinyxml2.cpp:485
static bool ToDouble(const char *str, double *value)
Definition tinyxml2.cpp:528
static bool ToBool(const char *str, bool *value)
Definition tinyxml2.cpp:501
static const char * ReadBOM(const char *p, bool *hasBOM)
Definition tinyxml2.cpp:289
Definition tinyxml2.h:463
virtual bool Visit(const XMLUnknown &)
Visit an unknown node.
Definition tinyxml2.h:498
virtual bool VisitExit(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:472
virtual ~XMLVisitor()
Definition tinyxml2.h:465
virtual bool VisitExit(const XMLElement &)
Visit an element.
Definition tinyxml2.h:481
virtual bool VisitEnter(const XMLDocument &)
Visit a document.
Definition tinyxml2.h:468
virtual bool Visit(const XMLComment &)
Visit a comment node.
Definition tinyxml2.h:494
virtual bool Visit(const XMLDeclaration &)
Visit a declaration.
Definition tinyxml2.h:486
virtual bool Visit(const XMLText &)
Visit a text node.
Definition tinyxml2.h:490
virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
Visit an element.
Definition tinyxml2.h:477
Definition tinyxml2.cpp:49
XMLError
Definition tinyxml2.h:504
@ XML_ERROR_MISMATCHED_ELEMENT
Definition tinyxml2.h:522
@ XML_ERROR_EMPTY_DOCUMENT
Definition tinyxml2.h:521
@ XML_SUCCESS
Definition tinyxml2.h:505
@ XML_ERROR_ELEMENT_MISMATCH
Definition tinyxml2.h:512
@ XML_ERROR_PARSING_ATTRIBUTE
Definition tinyxml2.h:514
@ XML_ERROR_FILE_NOT_FOUND
Definition tinyxml2.h:509
@ XML_ERROR_IDENTIFYING_TAG
Definition tinyxml2.h:515
@ XML_ERROR_PARSING_TEXT
Definition tinyxml2.h:516
@ XML_ERROR_PARSING_COMMENT
Definition tinyxml2.h:518
@ XML_NO_TEXT_NODE
Definition tinyxml2.h:525
@ XML_ERROR_FILE_READ_ERROR
Definition tinyxml2.h:511
@ XML_ERROR_PARSING_UNKNOWN
Definition tinyxml2.h:520
@ XML_ERROR_PARSING_CDATA
Definition tinyxml2.h:517
@ XML_ERROR_COUNT
Definition tinyxml2.h:527
@ XML_NO_ATTRIBUTE
Definition tinyxml2.h:507
@ XML_NO_ERROR
Definition tinyxml2.h:506
@ XML_ERROR_PARSING_DECLARATION
Definition tinyxml2.h:519
@ XML_WRONG_ATTRIBUTE_TYPE
Definition tinyxml2.h:508
@ XML_ERROR_PARSING
Definition tinyxml2.h:523
@ XML_ERROR_PARSING_ELEMENT
Definition tinyxml2.h:513
@ XML_ERROR_FILE_COULD_NOT_BE_OPENED
Definition tinyxml2.h:510
@ XML_CAN_NOT_CONVERT_TEXT
Definition tinyxml2.h:524
Whitespace
Definition tinyxml2.h:1493
@ PRESERVE_WHITESPACE
Definition tinyxml2.h:1494
@ COLLAPSE_WHITESPACE
Definition tinyxml2.h:1495
Definition tinyxml2.h:434
Chunk chunk[COUNT]
Definition tinyxml2.h:435
#define TIXMLASSERT(x)
Definition tinyxml2.h:85
static const int TIXML2_PATCH_VERSION
Definition tinyxml2.h:122
static const int TIXML2_MAJOR_VERSION
Definition tinyxml2.h:120
#define TINYXML2_LIB
Definition tinyxml2.h:69
static const int TIXML2_MINOR_VERSION
Definition tinyxml2.h:121
#define TIXML_SNPRINTF
Definition tinyxml2.h:113
Definition tinyxml2.h:430
char mem[SIZE]
Definition tinyxml2.h:432
Chunk * next
Definition tinyxml2.h:431