26 #ifndef TINYXML_INCLUDED 27 #define TINYXML_INCLUDED 30 #pragma warning( disable : 4530 ) 31 #pragma warning( disable : 4786 ) 32 #pragma warning( disable : 4996 ) 37 #pragma clang diagnostic push 38 #pragma clang diagnostic ignored "-Wundefined-bool-conversion" 48 #if defined( _DEBUG ) && !defined( DEBUG ) 52 #if defined( DEBUG ) && defined( _MSC_VER ) 54 #define TIXML_LOG OutputDebugString 56 #define TIXML_LOG printf 62 #define TIXML_STRING std::string 63 #define TIXML_ISTREAM std::istream 64 #define TIXML_OSTREAM std::ostream 67 #define TIXML_STRING TiXmlString 68 #define TIXML_OSTREAM TiXmlOutStream 153 virtual void Print( FILE* cfile,
int depth )
const = 0;
194 virtual const char*
Parse(
const char* p,
210 static const char* SkipWhiteSpace(
const char*,
TiXmlEncoding encoding );
213 return ( isspace( (
unsigned char) c ) || c ==
'\n' || c ==
'\r' );
219 static bool StreamWhiteSpace( TIXML_ISTREAM * in,
TIXML_STRING * tag );
220 static bool StreamTo( TIXML_ISTREAM * in,
int character,
TIXML_STRING * tag );
232 static const char* ReadText(
const char* in,
234 bool ignoreWhiteSpace,
240 static const char* GetEntity(
const char* in,
char* value,
int* length,
TiXmlEncoding encoding );
249 *length = utf8ByteTable[ *((
unsigned char*)p) ];
250 assert( *length >= 0 && *length < 5 );
260 return GetEntity( p, _value, length, encoding );
266 strncpy( _value, p, *length );
267 return p + (*length);
285 static bool StringEqual(
const char* p,
309 TIXML_ERROR_STRING_COUNT
311 static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
320 static int IsAlpha(
unsigned char anyByte,
TiXmlEncoding encoding );
321 static int IsAlphaNum(
unsigned char anyByte,
TiXmlEncoding encoding );
326 if ( v < 128 )
return tolower( v );
334 static void ConvertUTF32ToUTF8(
unsigned long input,
char* output,
int* length );
348 TINYXML_NUM_ENTITY = 5,
349 MAX_ENTITY_LENGTH = 6
352 static Entity entity[ TINYXML_NUM_ENTITY ];
374 friend std::istream& operator >> (std::istream& in,
TiXmlNode& base);
444 void SetValue(
const std::string& _value )
607 virtual void StreamIn( TIXML_ISTREAM* in,
TIXML_STRING* tag ) = 0;
653 TiXmlAttribute(
const std::string& _name,
const std::string& _value )
672 const char*
Name()
const {
return name.c_str (); }
673 const char*
Value()
const {
return value.c_str (); }
674 const int IntValue()
const;
675 const double DoubleValue()
const;
686 int QueryIntValue(
int* value )
const;
688 int QueryDoubleValue(
double* value )
const;
690 void SetName(
const char* _name ) { name = _name; }
691 void SetValue(
const char* _value ) { value = _value; }
693 void SetIntValue(
int value );
694 void SetDoubleValue(
double value );
697 void SetName(
const std::string& _name )
704 void SetValue(
const std::string& _value )
726 virtual void Print( FILE* cfile,
int depth )
const;
799 const char* Attribute(
const char* name )
const;
807 const char* Attribute(
const char* name,
int* i )
const;
815 const char* Attribute(
const char* name,
double* d )
const;
824 int QueryIntAttribute(
const char* name,
int* value )
const;
826 int QueryDoubleAttribute(
const char* name,
double* value )
const;
831 void SetAttribute(
const char* name,
const char * value );
834 const char* Attribute(
const std::string& name )
const {
return Attribute( name.c_str() ); }
835 const char* Attribute(
const std::string& name,
int* i )
const {
return Attribute( name.c_str(), i ); }
836 const char* Attribute(
const std::string& name,
double* d )
const {
return Attribute( name.c_str(), d ); }
837 int QueryIntAttribute(
const std::string& name,
int* value )
const {
return QueryIntAttribute( name.c_str(), value ); }
838 int QueryDoubleAttribute(
const std::string& name,
double* value )
const {
return QueryDoubleAttribute( name.c_str(), value ); }
841 void SetAttribute(
const std::string& name,
const std::string& _value )
849 void SetAttribute(
const std::string& name,
int _value )
853 SetAttribute (n.
buffer, _value);
860 void SetAttribute(
const char * name,
int value );
865 void SetDoubleAttribute(
const char * name,
double value );
869 void RemoveAttribute(
const char * name );
871 void RemoveAttribute(
const std::string& name ) { RemoveAttribute (name.c_str ()); }
880 virtual void Print( FILE* cfile,
int depth )
const;
894 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
925 virtual void Print( FILE* cfile,
int depth )
const;
937 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
971 virtual void Print( FILE* cfile,
int depth )
const;
984 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1010 #ifdef TIXML_USE_STL 1013 const std::string& _encoding,
1014 const std::string& _standalone );
1019 const char* _encoding,
1020 const char* _standalone );
1028 const char *
Version()
const {
return version.c_str (); }
1030 const char *
Encoding()
const {
return encoding.c_str (); }
1037 virtual void Print( FILE* cfile,
int depth )
const;
1044 #ifdef TIXML_USE_STL 1045 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1076 virtual void Print( FILE* cfile,
int depth )
const;
1083 #ifdef TIXML_USE_STL 1084 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1105 #ifdef TIXML_USE_STL 1121 bool SaveFile()
const;
1125 bool SaveFile(
const char * filename )
const;
1127 #ifdef TIXML_USE_STL 1133 bool SaveFile(
const std::string& filename )
const 1160 const char *
ErrorDesc()
const {
return errorDesc.c_str (); }
1207 errorLocation.row = errorLocation.col = 0;
1215 virtual void Print( FILE* cfile,
int depth = 0 )
const;
1223 #ifdef TIXML_USE_STL 1224 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1330 TiXmlHandle FirstChild(
const char * value )
const;
1334 TiXmlHandle FirstChildElement(
const char * value )
const;
1339 TiXmlHandle Child(
const char* value,
int index )
const;
1348 TiXmlHandle ChildElement(
const char* value,
int index )
const;
1355 #ifdef TIXML_USE_STL 1356 TiXmlHandle FirstChild(
const std::string& _value )
const {
return FirstChild( _value.c_str() ); }
1357 TiXmlHandle FirstChildElement(
const std::string& _value )
const {
return FirstChildElement( _value.c_str() ); }
1359 TiXmlHandle Child(
const std::string& _value,
int index )
const {
return Child( _value.c_str(), index ); }
1360 TiXmlHandle ChildElement(
const std::string& _value,
int index )
const {
return ChildElement( _value.c_str(), index ); }
1368 TiXmlText*
Text()
const {
return ( ( node && node->ToText() ) ? node->ToText() : 0 ); }
1377 #pragma clang diagnostic pop static const int utf8ByteTable[256]
Definition: tinyxml.h:192
TiXmlAttribute sentinel
Definition: tinyxml.h:771
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cpp:985
Definition: tinyxml.h:640
int col
Definition: tinyxml.h:93
void SetUserData(void *user)
Definition: tinyxml.h:187
Definition: tinyxml.h:757
TiXmlUnknown(const TiXmlUnknown ©)
Definition: tinyxml.h:1070
TiXmlHandle(const TiXmlHandle &ref)
Copy constructor.
Definition: tinyxml.h:1324
TiXmlString standalone
Definition: tinyxml.h:1053
bool operator==(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:716
Definition: tinyxml.h:303
TiXmlAttribute(const char *_name, const char *_value)
Construct an attribute with a name and value.
Definition: tinyxml.h:664
const char * Name() const
Return the name of this attribute.
Definition: tinyxml.h:672
TiXmlNode * prev
Definition: tinyxml.h:624
TiXmlHandle(TiXmlNode *node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition: tinyxml.h:1322
const char * ErrorDesc() const
Contains a textual (english) description of the error if one occurs.
Definition: tinyxml.h:1160
bool operator<(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:717
void Print() const
Definition: tinyxml.h:1212
Definition: tinyxml.h:305
static int ToLower(int v, TiXmlEncoding encoding)
Definition: tinyxml.h:322
TiXmlDeclaration * ToDeclaration() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:591
TiXmlElement * Element() const
Return the handle as a TiXmlElement. This may return null.
Definition: tinyxml.h:1366
TiXmlNode * firstChild
Definition: tinyxml.h:619
Definition: tinyxml.h:410
char chr
Definition: tinyxml.h:344
void operator=(const TiXmlUnknown ©)
Definition: tinyxml.h:1071
Definition: tinyxml.h:102
Definition: tinyxml.h:412
TiXmlNode * Parent() const
One step up the DOM.
Definition: tinyxml.h:456
TiXmlDocument * document
Definition: tinyxml.h:737
Definition: tinyxml.h:296
bool Error() const
Definition: tinyxml.h:1157
int Column() const
See Row()
Definition: tinyxml.h:185
TiXmlNode * ReplaceChild(TiXmlNode *replaceThis, const TiXmlNode &withThis)
Definition: tinyxml.cpp:272
void SetName(const char *_name)
Set the name of this attribute.
Definition: tinyxml.h:690
void SetTabSize(int _tabsize)
Definition: tinyxml.h:1197
TiXmlAttribute()
Construct an empty attribute.
Definition: tinyxml.h:646
int ErrorRow()
Definition: tinyxml.h:1174
const int TIXML_PATCH_VERSION
Definition: tinyxml.h:82
const char * Standalone() const
Is this a standalone document?
Definition: tinyxml.h:1032
void CopyTo(TiXmlElement *target) const
Definition: tinyxml.cpp:704
virtual ~TiXmlText()
Definition: tinyxml.h:957
void ClearError()
Definition: tinyxml.h:1204
void Clear()
Definition: tinyxml.h:90
TiXmlElement * FirstChildElement() const
Convenience function to get through elements.
Definition: tinyxml.cpp:403
void CopyTo(TiXmlUnknown *target) const
Definition: tinyxml.cpp:1209
virtual int Type() const
Definition: tinyxml.h:576
void SetValue(const char *_value)
Definition: tinyxml.h:441
TiXmlNode * InsertEndChild(const TiXmlNode &addThis)
Definition: tinyxml.cpp:210
TiXmlNode * InsertBeforeChild(TiXmlNode *beforeThis, const TiXmlNode &addThis)
Definition: tinyxml.cpp:220
static bool condenseWhiteSpace
Definition: tinyxml.h:353
Definition: tinyxml.h:109
virtual ~TiXmlDocument()
Definition: tinyxml.h:1113
NodeType
Definition: tinyxml.h:405
TiXmlText * ToText() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:590
TiXmlComment * ToComment() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:588
TiXmlNode * LinkEndChild(TiXmlNode *addThis)
Definition: tinyxml.cpp:193
TiXmlElement * RootElement() const
Definition: tinyxml.h:1150
Definition: tinyxml.h:299
const char * Encoding() const
Encoding. Will return an empty string if none was found.
Definition: tinyxml.h:1030
void * userData
Field containing a generic user pointer.
Definition: tinyxml.h:316
TiXmlAttribute * prev
Definition: tinyxml.h:740
const char * str
Definition: tinyxml.h:342
Definition: tinyxml.h:1004
#define TIXML_OSTREAM
Definition: tinyxml.h:68
Definition: tinyxml.h:110
const char * Value() const
Return the value of this attribute.
Definition: tinyxml.h:673
static bool IsWhiteSpace(char c)
Definition: tinyxml.h:211
Definition: tinyxml.h:300
TiXmlCursor()
Definition: tinyxml.h:89
TiXmlElement * NextSiblingElement() const
Definition: tinyxml.cpp:432
TiXmlAttributeSet attributeSet
Definition: tinyxml.h:906
TiXmlNode * FirstChild() const
The first child of this node. Will be null if there are no children.
Definition: tinyxml.h:458
Definition: tinyxml.h:1064
const TiXmlEncoding TIXML_DEFAULT_ENCODING
Definition: tinyxml.h:114
Definition: tinyxml.h:340
TiXmlElement * ToElement() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:587
TiXmlAttribute * Last() const
Definition: tinyxml.h:767
TiXmlUnknown()
Definition: tinyxml.h:1067
const char * Version() const
Version. Will return an empty string if none was found.
Definition: tinyxml.h:1028
TiXmlAttribute * next
Definition: tinyxml.h:741
static bool IsWhiteSpaceCondensed()
Return the current white space setting.
Definition: tinyxml.h:164
TiXmlText(const TiXmlText ©)
Definition: tinyxml.h:967
TiXmlCursor location
Definition: tinyxml.h:313
const char * Value() const
Definition: tinyxml.h:430
const int TIXML_MAJOR_VERSION
Definition: tinyxml.h:80
Definition: tinyxml.h:100
virtual ~TiXmlUnknown()
Definition: tinyxml.h:1068
int ErrorCol()
The column where the error occured. See ErrorRow()
Definition: tinyxml.h:1175
virtual void StreamOut(TiXmlOutStream *out) const
Definition: tinyxml.cpp:673
void CopyTo(TiXmlText *target) const
Definition: tinyxml.cpp:1077
const int ErrorId() const
Definition: tinyxml.h:1165
TiXmlString errorDesc
Definition: tinyxml.h:1232
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.cpp:622
int tabsize
Definition: tinyxml.h:1233
Definition: tinyxml.h:1097
TiXmlString value
Definition: tinyxml.h:739
TiXmlEncoding
Definition: tinyxml.h:107
const TiXmlString & SValue() const
Definition: tinyxml.h:614
int row
Definition: tinyxml.h:92
Definition: tinyxml.h:301
const char * c_str() const
Definition: tinystr.h:70
TiXmlNode * Identify(const char *start, TiXmlEncoding encoding)
Definition: tinyxmlparser.cpp:776
TiXmlUnknown * ToUnknown() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:589
TiXmlNode * LastChild() const
Definition: tinyxml.h:461
TiXmlNode * InsertAfterChild(TiXmlNode *afterThis, const TiXmlNode &addThis)
Definition: tinyxml.cpp:246
TiXmlUnknown * Unknown() const
Return the handle as a TiXmlUnknown. This may return null;.
Definition: tinyxml.h:1370
int Row() const
Definition: tinyxml.h:184
TiXmlNode * node
Definition: tinyxml.h:1373
Definition: tinyxml.h:411
Definition: tinyxml.h:1318
char * buffer
Definition: tinyxml.h:207
TiXmlDocument * ToDocument() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:586
TiXmlNode * PreviousSibling() const
Navigate to a sibling node.
Definition: tinyxml.h:530
TiXmlOutStream & operator<<(TiXmlOutStream &out, const TiXmlNode &base)
Definition: tinyxml.cpp:1296
static void SetCondenseWhiteSpace(bool condense)
Definition: tinyxml.h:161
Definition: tinyxml.h:297
bool operator>(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:718
Definition: tinyxml.h:138
Definition: tinyxml.h:307
virtual ~TiXmlBase()
Definition: tinyxml.h:146
Definition: tinyxml.h:302
virtual const char * Parse(const char *p, TiXmlParsingData *data=0, TiXmlEncoding encoding=TIXML_DEFAULT_ENCODING)
Definition: tinyxmlparser.cpp:668
void operator=(const TiXmlElement &base)
Definition: tinyxml.cpp:501
Definition: tinyxml.h:413
virtual TiXmlNode * Clone() const
Creates a new Element and returns it - the returned element is a copy.
Definition: tinyxml.cpp:727
TiXmlHandle operator=(const TiXmlHandle &ref)
Definition: tinyxml.h:1325
TiXmlNode * parent
Definition: tinyxml.h:616
TiXmlNode(NodeType _type)
Definition: tinyxml.cpp:144
TiXmlString version
Definition: tinyxml.h:1051
void * GetUserData()
Definition: tinyxml.h:188
Definition: tinyxml.h:363
Definition: tinyxmlparser.cpp:149
Definition: tinyxml.h:408
Definition: tinyxml.h:202
Definition: tinyxml.h:101
bool error
Definition: tinyxml.h:1230
Definition: tinyxml.h:948
bool NoChildren() const
Returns true if this node has no children.
Definition: tinyxml.h:584
TiXmlNode * Node() const
Return the handle as a TiXmlNode. This may return null.
Definition: tinyxml.h:1364
TiXmlString encoding
Definition: tinyxml.h:1052
TiXmlNode * next
Definition: tinyxml.h:625
int TabSize() const
Definition: tinyxml.h:1199
Definition: tinyxml.h:304
TiXmlNode * IterateChildren(TiXmlNode *previous) const
The last child of this node matching 'value'. Will be null if there are no children.
Definition: tinyxml.cpp:344
static const char * GetChar(const char *p, char *_value, int *length, TiXmlEncoding encoding)
Definition: tinyxml.h:244
void operator=(const TiXmlText &base)
Definition: tinyxml.h:968
TiXmlText(const char *initValue)
Constructor.
Definition: tinyxml.h:953
Definition: tinyxml.h:294
Definition: tinyxml.h:409
unsigned int strLength
Definition: tinyxml.h:343
NodeType type
Definition: tinyxml.h:617
bool RemoveChild(TiXmlNode *removeThis)
Delete a child of this node.
Definition: tinyxml.cpp:300
Definition: tinyxml.h:295
void SetDocument(TiXmlDocument *doc)
Definition: tinyxml.h:731
TiXmlAttribute * LastAttribute() const
Access the last attribute in this element.
Definition: tinyxml.h:875
void SetValue(const char *_value)
Set the value.
Definition: tinyxml.h:691
virtual ~TiXmlDeclaration()
Definition: tinyxml.h:1025
Definition: tinyxml.h:407
TiXmlNode * lastChild
Definition: tinyxml.h:620
TiXmlDocument * GetDocument() const
Definition: tinyxml.cpp:462
TiXmlDeclaration()
Construct an empty declaration.
Definition: tinyxml.h:1008
TiXmlAttribute * FirstAttribute() const
Access the first attribute in this element.
Definition: tinyxml.h:874
TiXmlString name
Definition: tinyxml.h:738
virtual ~TiXmlNode()
Definition: tinyxml.cpp:155
int errorId
Definition: tinyxml.h:1231
TiXmlString value
Definition: tinyxml.h:622
TiXmlAttribute * First() const
Definition: tinyxml.h:766
TiXmlNode * NextSibling() const
Navigate to a sibling node.
Definition: tinyxml.h:541
Definition: tinyxml.h:298
#define TIXML_STRING
Definition: tinyxml.h:67
const int TIXML_MINOR_VERSION
Definition: tinyxml.h:81
TiXmlText * Text() const
Return the handle as a TiXmlText. This may return null.
Definition: tinyxml.h:1368
Definition: tinyxml.h:779
TiXmlCursor errorLocation
Definition: tinyxml.h:1234
TiXmlBase()
Definition: tinyxml.h:145
Definition: tinyxml.h:111
Definition: tinyxml.h:306