MADNESS  version 0.9
tinyxml.h
Go to the documentation of this file.
1 /*
2 www.sourceforge.net/projects/tinyxml
3 Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
4 
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any
7 damages arising from the use of this software.
8 
9 Permission is granted to anyone to use this software for any
10 purpose, including commercial applications, and to alter it and
11 redistribute it freely, subject to the following restrictions:
12 
13 1. The origin of this software must not be misrepresented; you must
14 not claim that you wrote the original software. If you use this
15 software in a product, an acknowledgment in the product documentation
16 would be appreciated but is not required.
17 
18 2. Altered source versions must be plainly marked as such, and
19 must not be misrepresented as being the original software.
20 
21 3. This notice may not be removed or altered from any source
22 distribution.
23 */
24 
25 
26 #ifndef MADNESS_TINYXML_TINYXML_H__INCLUDED
27 #define MADNESS_TINYXML_TINYXML_H__INCLUDED
28 
29 #ifdef _MSC_VER
30 #pragma warning( push )
31 #pragma warning( disable : 4530 )
32 #pragma warning( disable : 4786 )
33 #endif
34 
35 #include <ctype.h>
36 #include <stdio.h>
37 #include <stdlib.h>
38 #include <string.h>
39 #include <assert.h>
40 
41 // Help out windows:
42 #if defined( _DEBUG ) && !defined( DEBUG )
43 #define DEBUG
44 #endif
45 
46 #define TIXML_USE_STL
47 #ifdef TIXML_USE_STL
48  #include <string>
49  #include <iostream>
50  #include <sstream>
51  #define TIXML_STRING std::string
52 #else
53  #include "tinystr.h"
54  #define TIXML_STRING TiXmlString
55 #endif
56 
57 // Deprecated library function hell. Compilers want to use the
58 // new safe versions. This probably doesn't fully address the problem,
59 // but it gets closer. There are too many compilers for me to fully
60 // test. If you get compilation troubles, undefine TIXML_SAFE
61 #define TIXML_SAFE
62 
63 #ifdef TIXML_SAFE
64  #if defined(_MSC_VER) && (_MSC_VER >= 1400 )
65  // Microsoft visual studio, version 2005 and higher.
66  #define TIXML_SNPRINTF _snprintf_s
67  #define TIXML_SNSCANF _snscanf_s
68  #define TIXML_SSCANF sscanf_s
69  #elif defined(_MSC_VER) && (_MSC_VER >= 1200 )
70  // Microsoft visual studio, version 6 and higher.
71  //#pragma message( "Using _sn* functions." )
72  #define TIXML_SNPRINTF _snprintf
73  #define TIXML_SNSCANF _snscanf
74  #define TIXML_SSCANF sscanf
75  #elif defined(__GNUC__) && (__GNUC__ >= 3 )
76  // GCC version 3 and higher.s
77  //#warning( "Using sn* functions." )
78  #define TIXML_SNPRINTF snprintf
79  #define TIXML_SNSCANF snscanf
80  #define TIXML_SSCANF sscanf
81  #else
82  #define TIXML_SSCANF sscanf
83  #endif
84 #endif
85 
86 class TiXmlDocument;
87 class TiXmlElement;
88 class TiXmlComment;
89 class TiXmlUnknown;
90 class TiXmlAttribute;
91 class TiXmlText;
92 class TiXmlDeclaration;
93 class TiXmlParsingData;
94 
95 const int TIXML_MAJOR_VERSION = 2;
96 const int TIXML_MINOR_VERSION = 5;
97 const int TIXML_PATCH_VERSION = 3;
98 
99 /* Internal structure for tracking location of items
100  in the XML file.
101 */
103 {
105  void Clear() { row = col = -1; }
106 
107  int row; // 0 based.
108  int col; // 0 based.
109 };
110 
111 
131 {
132 public:
133  virtual ~TiXmlVisitor() {}
134 
136  virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; }
138  virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; }
139 
141  virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; }
143  virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; }
144 
146  virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; }
148  virtual bool Visit( const TiXmlText& /*text*/ ) { return true; }
150  virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; }
152  virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; }
153 };
154 
155 // Only used by Attribute::Query functions
156 enum
157 {
161 };
162 
163 
164 // Used by the parsing routines.
166 {
170 };
171 
173 
197 {
198  friend class TiXmlNode;
199  friend class TiXmlElement;
200  friend class TiXmlDocument;
201 
202 public:
203  TiXmlBase() : userData(0) {}
204  virtual ~TiXmlBase() {}
205 
215  virtual void Print( FILE* cfile, int depth ) const = 0;
216 
223  static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; }
224 
226  static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; }
227 
246  int Row() const { return location.row + 1; }
247  int Column() const { return location.col + 1; }
248 
249  void SetUserData( void* user ) { userData = user; }
250  void* GetUserData() { return userData; }
251  const void* GetUserData() const { return userData; }
252 
253  // Table that returs, for a given lead byte, the total number of bytes
254  // in the UTF-8 sequence.
255  static const int utf8ByteTable[256];
256 
257  virtual const char* Parse( const char* p,
258  TiXmlParsingData* data,
259  TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0;
260 
264  static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out );
265 
266  enum
267  {
285 
287  };
288 
289 protected:
290 
291  static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding );
292  inline static bool IsWhiteSpace( char c )
293  {
294  return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' );
295  }
296  inline static bool IsWhiteSpace( int c )
297  {
298  if ( c < 256 )
299  return IsWhiteSpace( (char) c );
300  return false; // Again, only truly correct for English/Latin...but usually works.
301  }
302 
303  #ifdef TIXML_USE_STL
304  static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag );
305  static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag );
306  #endif
307 
308  /* Reads an XML name into the string provided. Returns
309  a pointer just past the last character of the name,
310  or 0 if the function has an error.
311  */
312  static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding );
313 
314  /* Reads text. Returns a pointer past the given end tag.
315  Wickedly complex options, but it keeps the (sensitive) code in one place.
316  */
317  static const char* ReadText( const char* in, // where to start
318  TIXML_STRING* text, // the string read
319  bool ignoreWhiteSpace, // whether to keep the white space
320  const char* endTag, // what ends this text
321  bool ignoreCase, // whether to ignore case in the end tag
322  TiXmlEncoding encoding ); // the current encoding
323 
324  // If an entity has been found, transform it into a character.
325  static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding );
326 
327  // Get a character, while interpreting entities.
328  // The length can be from 0 to 4 bytes.
329  inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding )
330  {
331  assert( p );
332  if ( encoding == TIXML_ENCODING_UTF8 )
333  {
334  *length = utf8ByteTable[ *((const unsigned char*)p) ];
335  assert( *length >= 0 && *length < 5 );
336  }
337  else
338  {
339  *length = 1;
340  }
341 
342  if ( *length == 1 )
343  {
344  if ( *p == '&' )
345  return GetEntity( p, _value, length, encoding );
346  *_value = *p;
347  return p+1;
348  }
349  else if ( *length )
350  {
351  //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe),
352  // and the null terminator isn't needed
353  for( int i=0; p[i] && i<*length; ++i ) {
354  _value[i] = p[i];
355  }
356  return p + (*length);
357  }
358  else
359  {
360  // Not valid text.
361  return 0;
362  }
363  }
364 
365  // Return true if the next characters in the stream are any of the endTag sequences.
366  // Ignore case only works for english, and should only be relied on when comparing
367  // to English words: StringEqual( p, "version", true ) is fine.
368  static bool StringEqual( const char* p,
369  const char* endTag,
370  bool ignoreCase,
371  TiXmlEncoding encoding );
372 
373  static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
374 
376 
378  void* userData;
379 
380  // None of these methods are reliable for any language except English.
381  // Good for approximation, not great for accuracy.
382  static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding );
383  static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding );
384  inline static int ToLower( int v, TiXmlEncoding encoding )
385  {
386  if ( encoding == TIXML_ENCODING_UTF8 )
387  {
388  if ( v < 128 ) return tolower( v );
389  return v;
390  }
391  else
392  {
393  return tolower( v );
394  }
395  }
396  static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
397 
398 private:
399  TiXmlBase( const TiXmlBase& ); // not implemented.
400  void operator=( const TiXmlBase& base ); // not allowed.
401 
402  struct Entity
403  {
404  const char* str;
405  unsigned int strLength;
406  char chr;
407  };
408  enum
409  {
410  NUM_ENTITY = 5,
411  MAX_ENTITY_LENGTH = 6
412 
413  };
414  static Entity entity[ NUM_ENTITY ];
415  static bool condenseWhiteSpace;
416 };
417 
418 
425 class TiXmlNode : public TiXmlBase
426 {
427  friend class TiXmlDocument;
428  friend class TiXmlElement;
429 
430 public:
431  #ifdef TIXML_USE_STL
432 
436  friend std::istream& operator >> (std::istream& in, TiXmlNode& base);
437 
454  friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base);
455 
457  friend std::string& operator<< (std::string& out, const TiXmlNode& base );
458 
459  #endif
460 
464  enum NodeType
465  {
473  };
474 
475  virtual ~TiXmlNode();
476 
489  const char *Value() const { return value.c_str (); }
490 
491  #ifdef TIXML_USE_STL
492 
496  const std::string& ValueStr() const { return value; }
497  #endif
498 
499  const TIXML_STRING& ValueTStr() const { return value; }
500 
510  void SetValue(const char * _value) { value = _value;}
511 
512  #ifdef TIXML_USE_STL
513  void SetValue( const std::string& _value ) { value = _value; }
515  #endif
516 
518  void Clear();
519 
521  TiXmlNode* Parent() { return parent; }
522  const TiXmlNode* Parent() const { return parent; }
523 
524  const TiXmlNode* FirstChild() const { return firstChild; }
526  const TiXmlNode* FirstChild( const char * value ) const;
527  TiXmlNode* FirstChild( const char * _value ) {
529  // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe)
530  // call the method, cast the return back to non-const.
531  return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value ));
532  }
533  const TiXmlNode* LastChild() const { return lastChild; }
535 
536  const TiXmlNode* LastChild( const char * value ) const;
537  TiXmlNode* LastChild( const char * _value ) {
538  return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value ));
539  }
540 
541  #ifdef TIXML_USE_STL
542  const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); }
543  TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); }
544  const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); }
545  TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); }
546  #endif
547 
564  const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const;
565  TiXmlNode* IterateChildren( const TiXmlNode* previous ) {
566  return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) );
567  }
568 
570  const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const;
571  TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) {
572  return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) );
573  }
574 
575  #ifdef TIXML_USE_STL
576  const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); }
577  TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); }
578  #endif
579 
583  TiXmlNode* InsertEndChild( const TiXmlNode& addThis );
584 
585 
595  TiXmlNode* LinkEndChild( TiXmlNode* addThis );
596 
600  TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis );
601 
605  TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis );
606 
610  TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis );
611 
613  bool RemoveChild( TiXmlNode* removeThis );
614 
616  const TiXmlNode* PreviousSibling() const { return prev; }
618 
620  const TiXmlNode* PreviousSibling( const char * ) const;
621  TiXmlNode* PreviousSibling( const char *_prev ) {
622  return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) );
623  }
624 
625  #ifdef TIXML_USE_STL
626  const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); }
627  TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); }
628  const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); }
629  TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); }
630  #endif
631 
633  const TiXmlNode* NextSibling() const { return next; }
634  TiXmlNode* NextSibling() { return next; }
635 
637  const TiXmlNode* NextSibling( const char * ) const;
638  TiXmlNode* NextSibling( const char* _next ) {
639  return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) );
640  }
641 
646  const TiXmlElement* NextSiblingElement() const;
648  return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() );
649  }
650 
655  const TiXmlElement* NextSiblingElement( const char * ) const;
656  TiXmlElement* NextSiblingElement( const char *_next ) {
657  return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) );
658  }
659 
660  #ifdef TIXML_USE_STL
661  const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); }
662  TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); }
663  #endif
664 
666  const TiXmlElement* FirstChildElement() const;
668  return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() );
669  }
670 
672  const TiXmlElement* FirstChildElement( const char * _value ) const;
673  TiXmlElement* FirstChildElement( const char * _value ) {
674  return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) );
675  }
676 
677  #ifdef TIXML_USE_STL
678  const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); }
679  TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); }
680  #endif
681 
686  int Type() const { return type; }
687 
691  const TiXmlDocument* GetDocument() const;
693  return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() );
694  }
695 
697  bool NoChildren() const { return !firstChild; }
698 
699  virtual const TiXmlDocument* ToDocument() const { return 0; }
700  virtual const TiXmlElement* ToElement() const { return 0; }
701  virtual const TiXmlComment* ToComment() const { return 0; }
702  virtual const TiXmlUnknown* ToUnknown() const { return 0; }
703  virtual const TiXmlText* ToText() const { return 0; }
704  virtual const TiXmlDeclaration* ToDeclaration() const { return 0; }
705 
706  virtual TiXmlDocument* ToDocument() { return 0; }
707  virtual TiXmlElement* ToElement() { return 0; }
708  virtual TiXmlComment* ToComment() { return 0; }
709  virtual TiXmlUnknown* ToUnknown() { return 0; }
710  virtual TiXmlText* ToText() { return 0; }
711  virtual TiXmlDeclaration* ToDeclaration() { return 0; }
712 
716  virtual TiXmlNode* Clone() const = 0;
717 
740  virtual bool Accept( TiXmlVisitor* visitor ) const = 0;
741 
742 protected:
743  TiXmlNode( NodeType _type );
744 
745  // Copy to the allocated object. Shared functionality between Clone, Copy constructor,
746  // and the assignment operator.
747  void CopyTo( TiXmlNode* target ) const;
748 
749  #ifdef TIXML_USE_STL
750  // The real work of the input operator.
751  virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0;
752  #endif
753 
754  // Figure out what is at *p, and parse it. Returns null if it is not an xml node.
755  TiXmlNode* Identify( const char* start, TiXmlEncoding encoding );
756 
759 
762 
764 
767 
768 private:
769  TiXmlNode( const TiXmlNode& ); // not implemented.
770  void operator=( const TiXmlNode& base ); // not allowed.
771 };
772 
773 
781 class TiXmlAttribute : public TiXmlBase
782 {
783  friend class TiXmlAttributeSet;
784 
785 public:
788  {
789  document = 0;
790  prev = next = 0;
791  }
792 
793  #ifdef TIXML_USE_STL
794  TiXmlAttribute( const std::string& _name, const std::string& _value )
796  {
797  name = _name;
798  value = _value;
799  document = 0;
800  prev = next = 0;
801  }
802  #endif
803 
805  TiXmlAttribute( const char * _name, const char * _value )
806  {
807  name = _name;
808  value = _value;
809  document = 0;
810  prev = next = 0;
811  }
812 
813  const char* Name() const { return name.c_str(); }
814  const char* Value() const { return value.c_str(); }
815  #ifdef TIXML_USE_STL
816  const std::string& ValueStr() const { return value; }
817  #endif
818  int IntValue() const;
819  double DoubleValue() const;
820 
821  // Get the tinyxml string representation
822  const TIXML_STRING& NameTStr() const { return name; }
823 
833  int QueryIntValue( int* _value ) const;
835  int QueryDoubleValue( double* _value ) const;
836 
837  void SetName( const char* _name ) { name = _name; }
838  void SetValue( const char* _value ) { value = _value; }
839 
840  void SetIntValue( int _value );
841  void SetDoubleValue( double _value );
842 
843  #ifdef TIXML_USE_STL
844  void SetName( const std::string& _name ) { name = _name; }
847  void SetValue( const std::string& _value ) { value = _value; }
848  #endif
849 
851  const TiXmlAttribute* Next() const;
853  return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() );
854  }
855 
857  const TiXmlAttribute* Previous() const;
859  return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() );
860  }
861 
862  bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; }
863  bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; }
864  bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; }
865 
866  /* Attribute parsing starts: first letter of the name
867  returns: the next char after the value end quote
868  */
869  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
870 
871  // Prints this Attribute to a FILE stream.
872  virtual void Print( FILE* cfile, int depth ) const {
873  Print( cfile, depth, 0 );
874  }
875  void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
876 
877  // [internal use]
878  // Set the document pointer so the attribute can report errors.
879  void SetDocument( TiXmlDocument* doc ) { document = doc; }
880 
881 private:
882  TiXmlAttribute( const TiXmlAttribute& ); // not implemented.
883  void operator=( const TiXmlAttribute& base ); // not allowed.
884 
885  TiXmlDocument* document; // A pointer back to a document, for error reporting.
886  TIXML_STRING name;
887  TIXML_STRING value;
888  TiXmlAttribute* prev;
889  TiXmlAttribute* next;
890 };
891 
892 
893 /* A class used to manage a group of attributes.
894  It is only used internally, both by the ELEMENT and the DECLARATION.
895 
896  The set can be changed transparent to the Element and Declaration
897  classes that use it, but NOT transparent to the Attribute
898  which has to implement a next() and previous() method. Which makes
899  it a bit problematic and prevents the use of STL.
900 
901  This version is implemented with circular lists because:
902  - I like circular lists
903  - it demonstrates some independence from the (typical) doubly linked list.
904 */
906 {
907 public:
910 
911  void Add( TiXmlAttribute* attribute );
912  void Remove( TiXmlAttribute* attribute );
913 
914  const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
915  TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
916  const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
917  TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
918 
919  const TiXmlAttribute* Find( const char* _name ) const;
920  TiXmlAttribute* Find( const char* _name ) {
921  return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) );
922  }
923  #ifdef TIXML_USE_STL
924  const TiXmlAttribute* Find( const std::string& _name ) const;
925  TiXmlAttribute* Find( const std::string& _name ) {
926  return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) );
927  }
928 
929  #endif
930 
931 private:
932  //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element),
933  //*ME: this class must be also use a hidden/disabled copy-constructor !!!
934  TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed
935  void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute)
936 
937  TiXmlAttribute sentinel;
938 };
939 
940 
945 class TiXmlElement : public TiXmlNode
946 {
947 public:
949  TiXmlElement (const char * in_value);
950 
951  #ifdef TIXML_USE_STL
952  TiXmlElement( const std::string& _value );
954  #endif
955 
956  TiXmlElement( const TiXmlElement& );
957 
958  void operator=( const TiXmlElement& base );
959 
960  virtual ~TiXmlElement();
961 
965  const char* Attribute( const char* name ) const;
966 
973  const char* Attribute( const char* name, int* i ) const;
974 
981  const char* Attribute( const char* name, double* d ) const;
982 
990  int QueryIntAttribute( const char* name, int* _value ) const;
992  int QueryDoubleAttribute( const char* name, double* _value ) const;
994  int QueryFloatAttribute( const char* name, float* _value ) const {
995  double d;
996  int result = QueryDoubleAttribute( name, &d );
997  if ( result == TIXML_SUCCESS ) {
998  *_value = (float)d;
999  }
1000  return result;
1001  }
1002 
1003  #ifdef TIXML_USE_STL
1004 
1012  template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const
1013  {
1014  const TiXmlAttribute* node = attributeSet.Find( name );
1015  if ( !node )
1016  return TIXML_NO_ATTRIBUTE;
1017 
1018  std::stringstream sstream( node->ValueStr() );
1019  sstream >> *outValue;
1020  if ( !sstream.fail() )
1021  return TIXML_SUCCESS;
1022  return TIXML_WRONG_TYPE;
1023  }
1024  /*
1025  This is - in theory - a bug fix for "QueryValueAtribute returns truncated std::string"
1026  but template specialization is hard to get working cross-compiler. Leaving the bug for now.
1027 
1028  // The above will fail for std::string because the space character is used as a seperator.
1029  // Specialize for strings. Bug [ 1695429 ] QueryValueAtribute returns truncated std::string
1030  template<> int QueryValueAttribute( const std::string& name, std::string* outValue ) const
1031  {
1032  const TiXmlAttribute* node = attributeSet.Find( name );
1033  if ( !node )
1034  return TIXML_NO_ATTRIBUTE;
1035  *outValue = node->ValueStr();
1036  return TIXML_SUCCESS;
1037  }
1038  */
1039  #endif
1040 
1044  void SetAttribute( const char* name, const char * _value );
1045 
1046  #ifdef TIXML_USE_STL
1047  const std::string* Attribute( const std::string& name ) const;
1048  const std::string* Attribute( const std::string& name, int* i ) const;
1049  const std::string* Attribute( const std::string& name, double* d ) const;
1050  int QueryIntAttribute( const std::string& name, int* _value ) const;
1051  int QueryDoubleAttribute( const std::string& name, double* _value ) const;
1052 
1054  void SetAttribute( const std::string& name, const std::string& _value );
1056  void SetAttribute( const std::string& name, int _value );
1057  #endif
1058 
1062  void SetAttribute( const char * name, int value );
1063 
1067  void SetDoubleAttribute( const char * name, double value );
1068 
1071  void RemoveAttribute( const char * name );
1072  #ifdef TIXML_USE_STL
1073  void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); }
1074  #endif
1075 
1076  const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); }
1077  TiXmlAttribute* FirstAttribute() { return attributeSet.First(); }
1078  const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); }
1079  TiXmlAttribute* LastAttribute() { return attributeSet.Last(); }
1080 
1113  const char* GetText() const;
1114 
1116  virtual TiXmlNode* Clone() const;
1117  // Print the Element to a FILE stream.
1118  virtual void Print( FILE* cfile, int depth ) const;
1119 
1120  /* Attribtue parsing starts: next char past '<'
1121  returns: next char past '>'
1122  */
1123  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
1124 
1125  virtual const TiXmlElement* ToElement() const { return this; }
1126  virtual TiXmlElement* ToElement() { return this; }
1127 
1130  virtual bool Accept( TiXmlVisitor* visitor ) const;
1131 
1132 protected:
1133 
1134  void CopyTo( TiXmlElement* target ) const;
1135  void ClearThis(); // like clear, but initializes 'this' object as well
1136 
1137  // Used to be public [internal use]
1138  #ifdef TIXML_USE_STL
1139  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1140  #endif
1141  /* [internal use]
1142  Reads the "value" of the element -- another element, or text.
1143  This should terminate with the current end tag.
1144  */
1145  const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding );
1146 
1147 private:
1148 
1149  TiXmlAttributeSet attributeSet;
1150 };
1151 
1152 
1155 class TiXmlComment : public TiXmlNode
1156 {
1157 public:
1161  TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::COMMENT ) {
1162  SetValue( _value );
1163  }
1164  TiXmlComment( const TiXmlComment& );
1165  void operator=( const TiXmlComment& base );
1166 
1167  virtual ~TiXmlComment() {}
1168 
1170  virtual TiXmlNode* Clone() const;
1171  // Write this Comment to a FILE stream.
1172  virtual void Print( FILE* cfile, int depth ) const;
1173 
1174  /* Attribtue parsing starts: at the ! of the !--
1175  returns: next char past '>'
1176  */
1177  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
1178 
1179  virtual const TiXmlComment* ToComment() const { return this; }
1180  virtual TiXmlComment* ToComment() { return this; }
1181 
1184  virtual bool Accept( TiXmlVisitor* visitor ) const;
1185 
1186 protected:
1187  void CopyTo( TiXmlComment* target ) const;
1188 
1189  // used to be public
1190  #ifdef TIXML_USE_STL
1191  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1192  #endif
1193 // virtual void StreamOut( TIXML_OSTREAM * out ) const;
1194 
1195 private:
1196 
1197 };
1198 
1199 
1205 class TiXmlText : public TiXmlNode
1206 {
1207  friend class TiXmlElement;
1208 public:
1213  TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TEXT)
1214  {
1215  SetValue( initValue );
1216  cdata = false;
1217  }
1218  virtual ~TiXmlText() {}
1219 
1220  #ifdef TIXML_USE_STL
1221  TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TEXT)
1223  {
1224  SetValue( initValue );
1225  cdata = false;
1226  }
1227  #endif
1228 
1229  TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TEXT ) { copy.CopyTo( this ); }
1230  void operator=( const TiXmlText& base ) { base.CopyTo( this ); }
1231 
1232  // Write this text object to a FILE stream.
1233  virtual void Print( FILE* cfile, int depth ) const;
1234 
1236  bool CDATA() const { return cdata; }
1238  void SetCDATA( bool _cdata ) { cdata = _cdata; }
1239 
1240  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
1241 
1242  virtual const TiXmlText* ToText() const { return this; }
1243  virtual TiXmlText* ToText() { return this; }
1244 
1247  virtual bool Accept( TiXmlVisitor* content ) const;
1248 
1249 protected :
1251  virtual TiXmlNode* Clone() const;
1252  void CopyTo( TiXmlText* target ) const;
1253 
1254  bool Blank() const; // returns true if all white space and new lines
1255  // [internal use]
1256  #ifdef TIXML_USE_STL
1257  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1258  #endif
1259 
1260 private:
1261  bool cdata; // true if this should be input and output as a CDATA style text element
1262 };
1263 
1264 
1279 {
1280 public:
1283 
1284 #ifdef TIXML_USE_STL
1285  TiXmlDeclaration( const std::string& _version,
1287  const std::string& _encoding,
1288  const std::string& _standalone );
1289 #endif
1290 
1292  TiXmlDeclaration( const char* _version,
1293  const char* _encoding,
1294  const char* _standalone );
1295 
1297  void operator=( const TiXmlDeclaration& copy );
1298 
1299  virtual ~TiXmlDeclaration() {}
1300 
1302  const char *Version() const { return version.c_str (); }
1304  const char *Encoding() const { return encoding.c_str (); }
1306  const char *Standalone() const { return standalone.c_str (); }
1307 
1309  virtual TiXmlNode* Clone() const;
1310  // Print this declaration to a FILE stream.
1311  virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
1312  virtual void Print( FILE* cfile, int depth ) const {
1313  Print( cfile, depth, 0 );
1314  }
1315 
1316  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
1317 
1318  virtual const TiXmlDeclaration* ToDeclaration() const { return this; }
1319  virtual TiXmlDeclaration* ToDeclaration() { return this; }
1320 
1323  virtual bool Accept( TiXmlVisitor* visitor ) const;
1324 
1325 protected:
1326  void CopyTo( TiXmlDeclaration* target ) const;
1327  // used to be public
1328  #ifdef TIXML_USE_STL
1329  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1330  #endif
1331 
1332 private:
1333 
1334  TIXML_STRING version;
1335  TIXML_STRING encoding;
1336  TIXML_STRING standalone;
1337 };
1338 
1339 
1347 class TiXmlUnknown : public TiXmlNode
1348 {
1349 public:
1351  virtual ~TiXmlUnknown() {}
1352 
1353  TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::UNKNOWN ) { copy.CopyTo( this ); }
1354  void operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); }
1355 
1357  virtual TiXmlNode* Clone() const;
1358  // Print this Unknown to a FILE stream.
1359  virtual void Print( FILE* cfile, int depth ) const;
1360 
1361  virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
1362 
1363  virtual const TiXmlUnknown* ToUnknown() const { return this; }
1364  virtual TiXmlUnknown* ToUnknown() { return this; }
1365 
1368  virtual bool Accept( TiXmlVisitor* content ) const;
1369 
1370 protected:
1371  void CopyTo( TiXmlUnknown* target ) const;
1372 
1373  #ifdef TIXML_USE_STL
1374  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1375  #endif
1376 
1377 private:
1378 
1379 };
1380 
1381 
1386 class TiXmlDocument : public TiXmlNode
1387 {
1388 public:
1390  TiXmlDocument();
1392  TiXmlDocument( const char * documentName );
1393 
1394  #ifdef TIXML_USE_STL
1395  TiXmlDocument( const std::string& documentName );
1397  #endif
1398 
1399  TiXmlDocument( const TiXmlDocument& copy );
1400  void operator=( const TiXmlDocument& copy );
1401 
1402  virtual ~TiXmlDocument() {}
1403 
1408  bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1410  bool SaveFile() const;
1412  bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1414  bool SaveFile( const char * filename ) const;
1420  bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1422  bool SaveFile( FILE* ) const;
1423 
1424  #ifdef TIXML_USE_STL
1425  bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING )
1426  {
1427 // StringToBuffer f( filename );
1428 // return ( f.buffer && LoadFile( f.buffer, encoding ));
1429  return LoadFile( filename.c_str(), encoding );
1430  }
1431  bool SaveFile( const std::string& filename ) const
1432  {
1433 // StringToBuffer f( filename );
1434 // return ( f.buffer && SaveFile( f.buffer ));
1435  return SaveFile( filename.c_str() );
1436  }
1437  #endif
1438 
1443  virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1444 
1449  const TiXmlElement* RootElement() const { return FirstChildElement(); }
1451 
1457  bool Error() const { return error; }
1458 
1460  const char * ErrorDesc() const { return errorDesc.c_str (); }
1461 
1465  int ErrorId() const { return errorId; }
1466 
1474  int ErrorRow() const { return errorLocation.row+1; }
1475  int ErrorCol() const { return errorLocation.col+1; }
1476 
1501  void SetTabSize( int _tabsize ) { tabsize = _tabsize; }
1502 
1503  int TabSize() const { return tabsize; }
1504 
1508  void ClearError() { error = false;
1509  errorId = 0;
1510  errorDesc = "";
1511  errorLocation.row = errorLocation.col = 0;
1512  //errorLocation.last = 0;
1513  }
1514 
1516  void Print() const { Print( stdout, 0 ); }
1517 
1518  /* Write the document to a string using formatted printing ("pretty print"). This
1519  will allocate a character array (new char[]) and return it as a pointer. The
1520  calling code pust call delete[] on the return char* to avoid a memory leak.
1521  */
1522  //char* PrintToMemory() const;
1523 
1525  virtual void Print( FILE* cfile, int depth = 0 ) const;
1526  // [internal use]
1527  void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding );
1528 
1529  virtual const TiXmlDocument* ToDocument() const { return this; }
1530  virtual TiXmlDocument* ToDocument() { return this; }
1531 
1534  virtual bool Accept( TiXmlVisitor* content ) const;
1535 
1536 protected :
1537  // [internal use]
1538  virtual TiXmlNode* Clone() const;
1539  #ifdef TIXML_USE_STL
1540  virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
1541  #endif
1542 
1543 private:
1544  void CopyTo( TiXmlDocument* target ) const;
1545 
1546  bool error;
1547  int errorId;
1548  TIXML_STRING errorDesc;
1549  int tabsize;
1550  TiXmlCursor errorLocation;
1551  bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write.
1552 };
1553 
1554 
1636 {
1637 public:
1639  TiXmlHandle( TiXmlNode* _node ) { this->node = _node; }
1641  TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; }
1642  TiXmlHandle operator=( const TiXmlHandle& ref ) { this->node = ref.node; return *this; }
1643 
1645  TiXmlHandle FirstChild() const;
1647  TiXmlHandle FirstChild( const char * value ) const;
1651  TiXmlHandle FirstChildElement( const char * value ) const;
1652 
1656  TiXmlHandle Child( const char* value, int index ) const;
1660  TiXmlHandle Child( int index ) const;
1665  TiXmlHandle ChildElement( const char* value, int index ) const;
1670  TiXmlHandle ChildElement( int index ) const;
1671 
1672  #ifdef TIXML_USE_STL
1673  TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); }
1674  TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); }
1675 
1676  TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); }
1677  TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); }
1678  #endif
1679 
1682  TiXmlNode* ToNode() const { return node; }
1685  TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); }
1688  TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); }
1691  TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); }
1692 
1696  TiXmlNode* Node() const { return ToNode(); }
1700  TiXmlElement* Element() const { return ToElement(); }
1704  TiXmlText* Text() const { return ToText(); }
1708  TiXmlUnknown* Unknown() const { return ToUnknown(); }
1709 
1710 private:
1711  TiXmlNode* node;
1712 };
1713 
1714 
1735 {
1736 public:
1737  TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ),
1738  buffer(), indent( " " ), lineBreak( "\n" ) {}
1739 
1740  virtual bool VisitEnter( const TiXmlDocument& doc );
1741  virtual bool VisitExit( const TiXmlDocument& doc );
1742 
1743  virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute );
1744  virtual bool VisitExit( const TiXmlElement& element );
1745 
1746  virtual bool Visit( const TiXmlDeclaration& declaration );
1747  virtual bool Visit( const TiXmlText& text );
1748  virtual bool Visit( const TiXmlComment& comment );
1749  virtual bool Visit( const TiXmlUnknown& unknown );
1750 
1754  void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; }
1756  const char* Indent() { return indent.c_str(); }
1761  void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; }
1763  const char* LineBreak() { return lineBreak.c_str(); }
1764 
1768  void SetStreamPrinting() { indent = "";
1769  lineBreak = "";
1770  }
1772  const char* CStr() { return buffer.c_str(); }
1774  size_t Size() { return buffer.size(); }
1775 
1776  #ifdef TIXML_USE_STL
1777  const std::string& Str() { return buffer; }
1779  #endif
1780 
1781 private:
1782  void DoIndent() {
1783  for( int i=0; i<depth; ++i )
1784  buffer += indent;
1785  }
1786  void DoLineBreak() {
1787  buffer += lineBreak;
1788  }
1789 
1790  int depth;
1791  bool simpleTextPrint;
1792  TIXML_STRING buffer;
1793  TIXML_STRING indent;
1794  TIXML_STRING lineBreak;
1795 };
1796 
1797 
1798 #ifdef _MSC_VER
1799 #pragma warning( pop )
1800 #endif
1801 
1802 #endif // MADNESS_TINYXML_TINYXML_H__INCLUDED
1803 
virtual ~TiXmlVisitor()
Definition: tinyxml.h:133
static const int utf8ByteTable[256]
Definition: tinyxml.h:255
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:641
TiXmlHandle Child(const std::string &_value, int index) const
Definition: tinyxml.h:1676
virtual const TiXmlComment * ToComment() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1179
TiXmlAttributeSet()
Definition: tinyxml.cc:1502
const TiXmlAttribute * First() const
Definition: tinyxml.h:914
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1049
TiXmlNode * LastChild(const char *_value)
The last child of this node matching 'value'. Will be null if there are no children.
Definition: tinyxml.h:537
Definition: tinyxml.h:781
TiXmlHandle(TiXmlNode *_node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
Definition: tinyxml.h:1639
virtual TiXmlNode * Clone() const
Creates a copy of this Declaration and returns it.
Definition: tinyxml.cc:1458
TiXmlUnknown * Unknown() const
Definition: tinyxml.h:1708
TiXmlNode * FirstChild(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:543
Definition: tinyxml.h:158
int col
Definition: tinyxml.h:108
virtual bool Accept(TiXmlVisitor *visitor) const
Definition: tinyxml.cc:846
virtual ~TiXmlElement()
Definition: tinyxml.cc:537
friend std::ostream & operator<<(std::ostream &out, const TiXmlNode &base)
Definition: tinyxml.cc:1611
void SetUserData(void *user)
Set a pointer to arbitrary user data.
Definition: tinyxml.h:249
Definition: tinyxml.h:130
Definition: tinyxml.h:905
virtual const TiXmlDocument * ToDocument() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1529
TiXmlUnknown(const TiXmlUnknown &copy)
Definition: tinyxml.h:1353
const TiXmlNode * Parent() const
Definition: tinyxml.h:522
const std::string & ValueStr() const
Definition: tinyxml.h:496
const TiXmlElement * RootElement() const
Definition: tinyxml.h:1449
TiXmlComment()
Constructs an empty comment.
Definition: tinyxml.h:1159
void SetLineBreak(const char *_lineBreak)
Definition: tinyxml.h:1761
const TIXML_STRING & ValueTStr() const
Definition: tinyxml.h:499
TiXmlElement * NextSiblingElement()
Definition: tinyxml.h:647
virtual const TiXmlElement * ToElement() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1125
TiXmlHandle(const TiXmlHandle &ref)
Copy constructor.
Definition: tinyxml.h:1641
TiXmlNode * PreviousSibling(const char *_prev)
Definition: tinyxml.h:621
TiXmlNode * LastChild()
The last child of this node. Will be null if there are no children.
Definition: tinyxml.h:534
const char * LineBreak()
Query the current line breaking string.
Definition: tinyxml.h:1763
virtual TiXmlNode * Clone() const
Creates a new Element and returns it - the returned element is a copy.
Definition: tinyxml.cc:860
bool Error() const
Definition: tinyxml.h:1457
virtual TiXmlElement * ToElement()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:707
double DoubleValue() const
Return the value of this attribute, converted to a double.
Definition: tinyxml.cc:1281
virtual bool Visit(const TiXmlUnknown &)
Visit an unknow node.
Definition: tinyxml.h:152
TiXmlAttribute(const char *_name, const char *_value)
Construct an attribute with a name and value.
Definition: tinyxml.h:805
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)=0
int IntValue() const
Return the value of this attribute, converted to an integer.
Definition: tinyxml.cc:1276
TiXmlNode * prev
Definition: tinyxml.h:765
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:1250
virtual const TiXmlText * ToText() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1242
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1389
TiXmlHandle FirstChild() const
Return a handle to the first child node.
Definition: tinyxml.cc:1634
void CopyTo(TiXmlUnknown *target) const
Definition: tinyxml.cc:1478
Definition: tinyxml.h:286
const void * GetUserData() const
Get a pointer to arbitrary user data.
Definition: tinyxml.h:251
int Type() const
Definition: tinyxml.h:686
static int ToLower(int v, TiXmlEncoding encoding)
Definition: tinyxml.h:384
TiXmlNode * IterateChildren(const std::string &_value, const TiXmlNode *previous)
STL std::string form.
Definition: tinyxml.h:577
const TiXmlElement * FirstChildElement(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:678
TiXmlNode * IterateChildren(const char *_value, const TiXmlNode *previous)
Definition: tinyxml.h:571
TiXmlNode * firstChild
Definition: tinyxml.h:760
static int IsAlphaNum(unsigned char anyByte, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:150
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1335
Definition: tinyxml.h:469
Definition: tinyxml.h:268
void SetDoubleAttribute(const char *name, double value)
Definition: tinyxml.cc:705
Definition: tinyxml.h:102
void operator=(const TiXmlUnknown &copy)
Definition: tinyxml.h:1354
Definition: tinyxml.h:471
int TabSize() const
Definition: tinyxml.h:1503
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.cc:1470
detail::ReferenceWrapper< T > const ref(T &t)
Reference wrapper factory function.
Definition: ref.h:132
Definition: tinyxml.h:283
::std::string string
Definition: gtest-port.h:872
int ErrorId() const
Definition: tinyxml.h:1465
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.h:1312
TiXmlElement * NextSiblingElement(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:662
const TIXML_STRING & NameTStr() const
Definition: tinyxml.h:822
TiXmlAttribute * FirstAttribute()
Definition: tinyxml.h:1077
FLOAT target(const FLOAT &x)
Definition: y.cc:295
void operator=(const TiXmlDeclaration &copy)
Definition: tinyxml.cc:1413
TiXmlElement * FirstChildElement(const char *_value)
Definition: tinyxml.h:673
virtual TiXmlNode * Clone() const
[internal use] Creates a new Element and returns it.
Definition: tinyxml.cc:1369
void operator=(const TiXmlDocument &copy)
Definition: tinyxml.cc:917
void SetValue(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:847
virtual void Print(FILE *cfile, int depth, TIXML_STRING *str) const
Definition: tinyxml.cc:1420
TiXmlAttribute * Next()
Definition: tinyxml.h:852
void ClearThis()
Definition: tinyxml.cc:543
static const char * ReadName(const char *p, TIXML_STRING *name, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:401
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:909
TiXmlNode * ReplaceChild(TiXmlNode *replaceThis, const TiXmlNode &withThis)
Definition: tinyxml.cc:290
bool SaveFile(const std::string &filename) const
< STL std::string version.
Definition: tinyxml.h:1431
const TiXmlAttribute * LastAttribute() const
Access the last attribute in this element.
Definition: tinyxml.h:1078
virtual bool VisitExit(const TiXmlElement &)
Visit an element.
Definition: tinyxml.h:143
void SetName(const char *_name)
Set the name of this attribute.
Definition: tinyxml.h:837
TiXmlNode * NextSibling()
Definition: tinyxml.h:634
void CopyTo(TiXmlComment *target) const
Definition: tinyxml.cc:1311
void SetTabSize(int _tabsize)
Definition: tinyxml.h:1501
TiXmlDocument()
Create an empty document, that has no name.
Definition: tinyxml.cc:884
TiXmlAttribute()
Construct an empty attribute.
Definition: tinyxml.h:787
const int TIXML_PATCH_VERSION
Definition: tinyxml.h:97
const char * Standalone() const
Is this a standalone document?
Definition: tinyxml.h:1306
TiXmlElement * ToElement() const
Definition: tinyxml.h:1685
TiXmlElement * NextSiblingElement(const char *_next)
Definition: tinyxml.h:656
virtual ~TiXmlText()
Definition: tinyxml.h:1218
TiXmlElement * FirstChildElement()
Definition: tinyxml.h:667
virtual TiXmlDocument * ToDocument()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:706
void ClearError()
Definition: tinyxml.h:1508
const char * Value() const
Return the value of this attribute.
Definition: tinyxml.h:814
virtual const TiXmlComment * ToComment() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:701
int QueryIntValue(int *_value) const
Definition: tinyxml.cc:1240
void Clear()
Definition: tinyxml.h:105
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.cc:771
virtual TiXmlComment * ToComment()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1180
friend std::istream & operator>>(std::istream &in, TiXmlNode &base)
Definition: tinyxml.cc:1598
virtual ~TiXmlComment()
Definition: tinyxml.h:1167
bool LoadFile(TiXmlEncoding encoding=TIXML_DEFAULT_ENCODING)
Definition: tinyxml.cc:924
static const char * errorString[TIXML_ERROR_STRING_COUNT]
Definition: tinyxml.h:373
void SetValue(const char *_value)
Definition: tinyxml.h:510
int ErrorCol() const
The column where the error occured. See ErrorRow()
Definition: tinyxml.h:1475
TiXmlNode * InsertEndChild(const TiXmlNode &addThis)
Definition: tinyxml.cc:211
virtual bool VisitExit(const TiXmlDocument &doc)
Visit a document.
Definition: tinyxml.cc:1763
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:1308
static void ConvertUTF32ToUTF8(unsigned long input, char *output, int *length)
Definition: tinyxmlparser.cc:88
virtual TiXmlElement * ToElement()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1126
TiXmlNode * InsertBeforeChild(TiXmlNode *beforeThis, const TiXmlNode &addThis)
Definition: tinyxml.cc:226
Definition: tinyxml.h:167
virtual ~TiXmlDocument()
Definition: tinyxml.h:1402
TiXmlNode * PreviousSibling()
Definition: tinyxml.h:617
NodeType
Definition: tinyxml.h:464
virtual const TiXmlDeclaration * ToDeclaration() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:704
TiXmlAttribute * Find(const char *_name)
Definition: tinyxml.h:920
virtual bool VisitEnter(const TiXmlDocument &)
Visit a document.
Definition: tinyxml.h:136
TiXmlHandle FirstChildElement() const
Return a handle to the first child element.
Definition: tinyxml.cc:1658
TiXmlHandle ChildElement(const std::string &_value, int index) const
Definition: tinyxml.h:1677
const char * Encoding() const
Encoding. Will return an empty string if none was found.
Definition: tinyxml.h:1304
TiXmlNode * LinkEndChild(TiXmlNode *addThis)
Definition: tinyxml.cc:184
bool Blank() const
Definition: tinyxmlparser.cc:1631
void operator=(const TiXmlComment &base)
Definition: tinyxml.cc:1293
const TiXmlNode * LastChild() const
Definition: tinyxml.h:533
const char * Name() const
Return the name of this attribute.
Definition: tinyxml.h:813
void SetDoubleValue(double _value)
Set the value from a double.
Definition: tinyxml.cc:1265
void * userData
Field containing a generic user pointer.
Definition: tinyxml.h:378
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.cc:1300
virtual bool Accept(TiXmlVisitor *visitor) const =0
TiXmlDocument * GetDocument()
Definition: tinyxml.h:692
void Print() const
Definition: tinyxml.h:1516
Definition: tinyxml.h:1278
const TiXmlAttribute * Last() const
Definition: tinyxml.h:916
Definition: tinyxml.h:168
static bool IsWhiteSpace(char c)
Definition: tinyxml.h:292
TiXmlCursor()
Definition: tinyxml.h:104
Definition: tinyxml.h:1347
virtual bool Visit(const TiXmlText &)
Visit a text node.
Definition: tinyxml.h:148
const TiXmlEncoding TIXML_DEFAULT_ENCODING
Definition: tinyxml.h:172
int ErrorRow() const
Definition: tinyxml.h:1474
const char * Version() const
Version. Will return an empty string if none was found.
Definition: tinyxml.h:1302
TiXmlNode * NextSibling(const char *_next)
Definition: tinyxml.h:638
TiXmlNode * FirstChild()
Definition: tinyxml.h:525
TiXmlUnknown()
Definition: tinyxml.h:1350
TiXmlHandle ChildElement(const char *value, int index) const
Definition: tinyxml.cc:1739
virtual bool Accept(TiXmlVisitor *content) const
Definition: tinyxml.cc:1484
int Column() const
See Row()
Definition: tinyxml.h:247
static bool IsWhiteSpaceCondensed()
Return the current white space setting.
Definition: tinyxml.h:226
TiXmlText(const TiXmlText &copy)
Definition: tinyxml.h:1229
static const char * ReadText(const char *in, TIXML_STRING *text, bool ignoreWhiteSpace, const char *endTag, bool ignoreCase, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:574
TiXmlCursor location
Definition: tinyxml.h:375
const int TIXML_MAJOR_VERSION
Definition: tinyxml.h:95
Definition: tinyxml.h:269
void SetIndent(const char *_indent)
Definition: tinyxml.h:1754
virtual ~TiXmlUnknown()
Definition: tinyxml.h:1351
const T1 &f1 return GTEST_2_TUPLE_() T(f0, f1)
const TiXmlNode * FirstChild() const
The first child of this node. Will be null if there are no children.
Definition: tinyxml.h:524
const char * ErrorDesc() const
Contains a textual (english) description of the error if one occurs.
Definition: tinyxml.h:1460
bool LoadFile(const std::string &filename, TiXmlEncoding encoding=TIXML_DEFAULT_ENCODING)
Definition: tinyxml.h:1425
virtual const TiXmlUnknown * ToUnknown() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1363
virtual TiXmlDocument * ToDocument()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1530
const TiXmlAttribute * Next() const
Get the next sibling attribute in the DOM. Returns null at end.
Definition: tinyxml.cc:1174
Definition: tinyxml.h:276
void RemoveAttribute(const char *name)
Definition: tinyxml.cc:416
virtual TiXmlNode * Clone() const
Definition: tinyxml.cc:1138
void SetAttribute(const char *name, const char *_value)
Definition: tinyxml.cc:717
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1572
TiXmlAttribute * Last()
Definition: tinyxml.h:917
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.cc:1335
virtual void Print(FILE *cfile, int depth) const
Definition: tinyxml.h:872
void SetCDATA(bool _cdata)
Turns on or off a CDATA representation of text.
Definition: tinyxml.h:1238
const char * Indent()
Query the indention string.
Definition: tinyxml.h:1756
Function< T, NDIM > copy(const Function< T, NDIM > &f, const std::shared_ptr< WorldDCPmapInterface< Key< NDIM > > > &pmap, bool fence=true)
Create a new copy of the function with different distribution and optional fence. ...
Definition: mra.h:1835
TiXmlElement * FirstChildElement(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:679
bool SaveFile() const
Save a file using the current document value. Returns true if successful.
Definition: tinyxml.cc:933
virtual TiXmlDeclaration * ToDeclaration()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1319
Definition: tinyxml.h:1386
const TiXmlElement * FirstChildElement() const
Convenience function to get through elements.
Definition: tinyxml.cc:431
TiXmlEncoding
Definition: tinyxml.h:165
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)=0
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1274
virtual const TiXmlDeclaration * ToDeclaration() const
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1318
int row
Definition: tinyxml.h:107
int QueryDoubleValue(double *_value) const
QueryDoubleValue examines the value string. See QueryIntValue().
Definition: tinyxml.cc:1247
Definition: tinyxml.h:271
TiXmlElement(const char *in_value)
Construct an element.
Definition: tinyxml.cc:504
const TiXmlNode * LastChild(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:544
int QueryFloatAttribute(const char *name, float *_value) const
QueryFloatAttribute examines the attribute - see QueryIntAttribute().
Definition: tinyxml.h:994
const TiXmlNode * PreviousSibling() const
Navigate to a sibling node.
Definition: tinyxml.h:616
const TiXmlNode * NextSibling(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:628
const TiXmlAttribute * Find(const char *_name) const
Definition: tinyxml.cc:1575
static const char * SkipWhiteSpace(const char *, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:314
TiXmlNode * Identify(const char *start, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:818
TiXmlNode * InsertAfterChild(TiXmlNode *afterThis, const TiXmlNode &addThis)
Definition: tinyxml.cc:258
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:1549
static bool StreamTo(std::istream *in, int character, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:380
virtual TiXmlDeclaration * ToDeclaration()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:711
virtual const TiXmlElement * ToElement() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:700
const char * ReadValue(const char *in, TiXmlParsingData *prevData, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1177
TiXmlHandle Child(const char *value, int index) const
Definition: tinyxml.cc:1701
void Add(TiXmlAttribute *attribute)
Definition: tinyxml.cc:1516
const std::string & ValueStr() const
Return the value of this attribute.
Definition: tinyxml.h:816
const TiXmlDocument * GetDocument() const
Definition: tinyxml.cc:491
Definition: tinyxml.h:470
bool CDATA() const
Queries whether this represents text using a CDATA section.
Definition: tinyxml.h:1236
Definition: tinyxml.h:1635
virtual bool Accept(TiXmlVisitor *visitor) const
Definition: tinyxml.cc:1317
static bool IsWhiteSpace(int c)
Definition: tinyxml.h:296
virtual TiXmlComment * ToComment()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:708
bool operator>(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:864
const TiXmlNode * IterateChildren(const std::string &_value, const TiXmlNode *previous) const
STL std::string form.
Definition: tinyxml.h:576
~TiXmlAttributeSet()
Definition: tinyxml.cc:1509
static const char * GetEntity(const char *in, char *value, int *length, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:438
TiXmlText * Text() const
Definition: tinyxml.h:1704
TiXmlNode * Node() const
Definition: tinyxml.h:1696
TiXmlNode * ToNode() const
Definition: tinyxml.h:1682
const TiXmlAttribute * Previous() const
Get the previous sibling attribute in the DOM. Returns null at beginning.
Definition: tinyxml.cc:1194
static void SetCondenseWhiteSpace(bool condense)
Definition: tinyxml.h:223
bool operator<(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:863
Definition: tinyxml.h:196
const TiXmlElement * NextSiblingElement() const
Definition: tinyxml.cc:461
TiXmlNode * Parent()
One step up the DOM.
Definition: tinyxml.h:521
virtual TiXmlUnknown * ToUnknown()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:709
bool operator==(const TiXmlAttribute &rhs) const
Definition: tinyxml.h:862
virtual const char * Parse(const char *p, TiXmlParsingData *data, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:1498
virtual const TiXmlUnknown * ToUnknown() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:702
TiXmlComment(const char *_value)
Construct a comment from text.
Definition: tinyxml.h:1161
virtual ~TiXmlBase()
Definition: tinyxml.h:204
static bool StringEqual(const char *p, const char *endTag, bool ignoreCase, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:534
virtual bool VisitEnter(const TiXmlDocument &doc)
Visit a document.
Definition: tinyxml.cc:1758
virtual const char * Parse(const char *p, TiXmlParsingData *data=0, TiXmlEncoding encoding=TIXML_DEFAULT_ENCODING)
Definition: tinyxmlparser.cc:704
void operator=(const TiXmlElement &base)
Definition: tinyxml.cc:530
Definition: tinyxml.h:472
TiXmlHandle operator=(const TiXmlHandle &ref)
Definition: tinyxml.h:1642
TiXmlNode * parent
Definition: tinyxml.h:757
TiXmlNode * IterateChildren(const TiXmlNode *previous)
Definition: tinyxml.h:565
int QueryIntAttribute(const char *name, int *_value) const
Definition: tinyxml.cc:643
int Row() const
Definition: tinyxml.h:246
TiXmlHandle FirstChild(const std::string &_value) const
Definition: tinyxml.h:1673
void SetError(int err, const char *errorLocation, TiXmlParsingData *prevData, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:798
TiXmlAttribute * Previous()
Definition: tinyxml.h:858
TiXmlElement * Element() const
Definition: tinyxml.h:1700
virtual bool Accept(TiXmlVisitor *content) const
Definition: tinyxml.cc:1160
TiXmlNode(NodeType _type)
Definition: tinyxml.cc:135
TiXmlElement * RootElement()
Definition: tinyxml.h:1450
static void EncodeString(const TIXML_STRING &str, TIXML_STRING *out)
Definition: tinyxml.cc:51
int QueryValueAttribute(const std::string &name, T *outValue) const
Definition: tinyxml.h:1012
void * GetUserData()
Get a pointer to arbitrary user data.
Definition: tinyxml.h:250
Definition: tinyxml.h:425
Definition: tinyxml.h:467
virtual const TiXmlText * ToText() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:703
void CopyTo(TiXmlNode *target) const
Definition: tinyxml.cc:160
TiXmlNode * LastChild(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:545
size_t Size()
Return the length of the result string.
Definition: tinyxml.h:1774
void SetIntValue(int _value)
Set the value from an integer.
Definition: tinyxml.cc:1254
Definition: tinyxml.h:1734
TiXmlNode * PreviousSibling(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:627
virtual TiXmlNode * Clone() const
Creates a copy of this Unknown and returns it.
Definition: tinyxml.cc:1490
Definition: tinyxml.h:1205
const TiXmlNode * FirstChild(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:542
TiXmlNode * next
Definition: tinyxml.h:766
virtual void StreamIn(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:1467
virtual bool VisitExit(const TiXmlDocument &)
Visit a document.
Definition: tinyxml.h:138
virtual bool Visit(const TiXmlComment &)
Visit a comment node.
Definition: tinyxml.h:150
Definition: tinyxml.h:281
static const char * GetChar(const char *p, char *_value, int *length, TiXmlEncoding encoding)
Definition: tinyxml.h:329
int QueryDoubleAttribute(const char *name, double *_value) const
QueryDoubleAttribute examines the attribute - see QueryIntAttribute().
Definition: tinyxml.cc:663
void operator=(const TiXmlText &base)
Definition: tinyxml.h:1230
TiXmlText(const char *initValue)
Definition: tinyxml.h:1213
const TiXmlNode * IterateChildren(const TiXmlNode *previous) const
Definition: tinyxml.cc:364
Definition: tinyxml.h:159
const char * Value() const
Definition: tinyxml.h:489
TiXmlNode * NextSibling(const std::string &_value)
STL std::string form.
Definition: tinyxml.h:629
Definition: tinyxml.h:468
void CopyTo(TiXmlText *target) const
Definition: tinyxml.cc:1356
virtual TiXmlNode * Clone() const
Returns a copy of this Comment.
Definition: tinyxml.cc:1323
bool NoChildren() const
Returns true if this node has no children.
Definition: tinyxml.h:697
void CopyTo(TiXmlElement *target) const
Definition: tinyxml.cc:824
Definition: tinyxml.h:270
Definition: tinyxml.h:160
virtual bool Accept(TiXmlVisitor *visitor) const
Definition: tinyxml.cc:1452
const TiXmlAttribute * FirstAttribute() const
Access the first attribute in this element.
Definition: tinyxml.h:1076
NodeType type
Definition: tinyxml.h:758
bool RemoveChild(TiXmlNode *removeThis)
Delete a child of this node.
Definition: tinyxml.cc:318
TiXmlPrinter()
Definition: tinyxml.h:1737
TIXML_STRING value
Definition: tinyxml.h:763
void RemoveAttribute(const std::string &name)
STL std::string form.
Definition: tinyxml.h:1073
Definition: tinyxml.h:1155
void SetDocument(TiXmlDocument *doc)
Definition: tinyxml.h:879
const char * GetText() const
Definition: tinyxml.cc:871
virtual TiXmlUnknown * ToUnknown()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1364
virtual const TiXmlDocument * ToDocument() const
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:699
void Remove(TiXmlAttribute *attribute)
Definition: tinyxml.cc:1531
void Clear()
Delete all the children of this node. Does not affect 'this'.
Definition: tinyxml.cc:167
TiXmlHandle FirstChildElement(const std::string &_value) const
Definition: tinyxml.h:1674
void SetValue(const char *_value)
Set the value.
Definition: tinyxml.h:838
const std::string & Str()
Return the result.
Definition: tinyxml.h:1778
virtual ~TiXmlDeclaration()
Definition: tinyxml.h:1299
Definition: tinyxml.h:466
const TiXmlNode * NextSibling() const
Navigate to a sibling node.
Definition: tinyxml.h:633
virtual TiXmlText * ToText()
Cast to a more defined type. Will return null not of the requested type.
Definition: tinyxml.h:1243
TiXmlAttribute * LastAttribute()
Definition: tinyxml.h:1079
TiXmlNode * lastChild
Definition: tinyxml.h:761
TiXmlText * ToText() const
Definition: tinyxml.h:1688
TiXmlDeclaration()
Construct an empty declaration.
Definition: tinyxml.h:1282
void SetStreamPrinting()
Definition: tinyxml.h:1768
static int IsAlpha(unsigned char anyByte, TiXmlEncoding encoding)
Definition: tinyxmlparser.cc:129
const double c
Definition: gfit.cc:200
const char * Attribute(const char *name) const
Definition: tinyxml.cc:555
TiXmlAttribute * First()
Definition: tinyxml.h:915
virtual void Print(FILE *cfile, int depth) const =0
virtual ~TiXmlNode()
Definition: tinyxml.cc:146
virtual bool Accept(TiXmlVisitor *content) const
Definition: tinyxml.cc:1363
virtual TiXmlNode * Clone() const =0
static bool StreamWhiteSpace(std::istream *in, TIXML_STRING *tag)
Definition: tinyxmlparser.cc:365
const TiXmlElement * NextSiblingElement(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:661
virtual bool Visit(const TiXmlDeclaration &declaration)
Visit a declaration.
Definition: tinyxml.cc:1859
void CopyTo(TiXmlDeclaration *target) const
Definition: tinyxml.cc:1442
TiXmlUnknown * ToUnknown() const
Definition: tinyxml.h:1691
const TiXmlNode * PreviousSibling(const std::string &_value) const
STL std::string form.
Definition: tinyxml.h:626
const char * CStr()
Return the result.
Definition: tinyxml.h:1772
virtual TiXmlText * ToText()
Cast to a more defined type. Will return null if not of the requested type.
Definition: tinyxml.h:710
Definition: tinyxml.h:282
#define TIXML_STRING
Definition: tinyxml.h:51
const int TIXML_MINOR_VERSION
Definition: tinyxml.h:96
Definition: tinyxml.h:945
virtual bool VisitEnter(const TiXmlElement &, const TiXmlAttribute *)
Visit an element.
Definition: tinyxml.h:141
TiXmlBase()
Definition: tinyxml.h:203
Definition: tinyxml.h:169
virtual bool Visit(const TiXmlDeclaration &)
Visit a declaration.
Definition: tinyxml.h:146
TiXmlAttribute * Find(const std::string &_name)
Definition: tinyxml.h:925