64 #ifndef TINYXML_INCLUDED 65 #define TINYXML_INCLUDED 68 #pragma warning( push ) 69 #pragma warning( disable : 4530 ) 70 #pragma warning( disable : 4786 ) 80 #if defined( _DEBUG ) && !defined( DEBUG ) 87 #define TIXML_STRING std::string 88 #define TIXML_ISTREAM std::istream 89 #define TIXML_OSTREAM std::ostream 92 #define TIXML_STRING TiXmlString 93 #define TIXML_OSTREAM TiXmlOutStream 101 #define TIXML_SAFE // TinyXml isn't fully buffer overrun protected, safe code. This is work in progress. 103 #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) 105 #define TIXML_SNPRINTF _snprintf_s 106 #define TIXML_SNSCANF _snscanf_s 107 #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) 110 #define TIXML_SNPRINTF _snprintf 111 #define TIXML_SNSCANF _snscanf 112 #elif defined(__GNUC__) && (__GNUC__ >= 3 ) 115 #define TIXML_SNPRINTF snprintf 116 #define TIXML_SNSCANF snscanf 120 namespace RTT {
namespace marsh {
126 class TiXmlAttribute;
128 class TiXmlDeclaration;
129 class TiXmlParsingData;
204 virtual void Print( FILE* cfile,
int depth )
const = 0;
235 int Row()
const {
return location.row + 1; }
236 int Column()
const {
return location.col + 1; }
243 static const int utf8ByteTable[256];
245 virtual const char* Parse(
const char* p,
268 TIXML_ERROR_STRING_COUNT
283 static const char* SkipWhiteSpace(
const char*,
TiXmlEncoding encoding );
286 return ( isspace( (
unsigned char) c ) || c ==
'\n' || c ==
'\r' );
291 return IsWhiteSpace( (
char) c );
298 static bool StreamWhiteSpace( TIXML_ISTREAM * in,
TIXML_STRING * tag );
299 static bool StreamTo( TIXML_ISTREAM * in,
int character,
TIXML_STRING * tag );
311 static const char* ReadText(
const char* in,
313 bool ignoreWhiteSpace,
319 static const char* GetEntity(
const char* in,
char* value,
int* length,
TiXmlEncoding encoding );
328 *length = utf8ByteTable[ *((
unsigned char*)p) ];
329 assert( *length >= 0 && *length < 5 );
339 return GetEntity( p, _value, length, encoding );
347 for(
int i=0; p[i] && i<*length; ++i ) {
350 return p + (*length);
368 static bool StringEqual(
const char* p,
373 static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
382 static int IsAlpha(
unsigned char anyByte,
TiXmlEncoding encoding );
383 static int IsAlphaNum(
unsigned char anyByte,
TiXmlEncoding encoding );
388 if ( v < 128 )
return tolower( v );
396 static void ConvertUTF32ToUTF8(
unsigned long input,
char* output,
int* length );
411 MAX_ENTITY_LENGTH = 6
492 const char *
Value()
const {
return value.c_str (); }
499 const std::string& ValueStr()
const {
return value; }
511 void SetValue(
const char * _value) { value = _value;}
514 void SetValue(
const std::string& _value ) { value = _value; }
527 const TiXmlNode* FirstChild(
const char * value )
const;
528 TiXmlNode* FirstChild(
const char * value );
532 const TiXmlNode* LastChild(
const char * value )
const;
533 TiXmlNode* LastChild(
const char * value );
536 const TiXmlNode* FirstChild(
const std::string& _value )
const {
return FirstChild (_value.c_str ()); }
537 TiXmlNode* FirstChild(
const std::string& _value ) {
return FirstChild (_value.c_str ()); }
538 const TiXmlNode* LastChild(
const std::string& _value )
const {
return LastChild (_value.c_str ()); }
539 TiXmlNode* LastChild(
const std::string& _value ) {
return LastChild (_value.c_str ()); }
562 const TiXmlNode* IterateChildren(
const char * value,
const TiXmlNode* previous )
const;
566 const TiXmlNode* IterateChildren(
const std::string& _value,
const TiXmlNode* previous )
const {
return IterateChildren (_value.c_str (), previous); }
567 TiXmlNode* IterateChildren(
const std::string& _value,
TiXmlNode* previous ) {
return IterateChildren (_value.c_str (), previous); }
603 bool RemoveChild(
TiXmlNode* removeThis );
610 const TiXmlNode* PreviousSibling(
const char * )
const;
611 TiXmlNode* PreviousSibling(
const char * );
614 const TiXmlNode* PreviousSibling(
const std::string& _value )
const {
return PreviousSibling (_value.c_str ()); }
615 TiXmlNode* PreviousSibling(
const std::string& _value ) {
return PreviousSibling (_value.c_str ()); }
616 const TiXmlNode* NextSibling(
const std::string& _value)
const {
return NextSibling (_value.c_str ()); }
617 TiXmlNode* NextSibling(
const std::string& _value) {
return NextSibling (_value.c_str ()); }
625 const TiXmlNode* NextSibling(
const char * )
const;
639 const TiXmlElement* NextSiblingElement(
const char * )
const;
643 const TiXmlElement* NextSiblingElement(
const std::string& _value)
const {
return NextSiblingElement (_value.c_str ()); }
644 TiXmlElement* NextSiblingElement(
const std::string& _value) {
return NextSiblingElement (_value.c_str ()); }
652 const TiXmlElement* FirstChildElement(
const char * value )
const;
656 const TiXmlElement* FirstChildElement(
const std::string& _value )
const {
return FirstChildElement (_value.c_str ()); }
657 TiXmlElement* FirstChildElement(
const std::string& _value ) {
return FirstChildElement (_value.c_str ()); }
664 int Type()
const {
return type; }
703 virtual void StreamIn( TIXML_ISTREAM* in,
TIXML_STRING* tag ) = 0;
746 TiXmlAttribute(
const std::string& _name,
const std::string& _value )
765 const char*
Name()
const {
return name.c_str (); }
766 const char*
Value()
const {
return value.c_str (); }
767 int IntValue()
const;
768 double DoubleValue()
const;
782 int QueryIntValue(
int* _value )
const;
784 int QueryDoubleValue(
double* _value )
const;
786 void SetName(
const char* _name ) { name = _name; }
787 void SetValue(
const char* _value ) { value = _value; }
789 void SetIntValue(
int _value );
790 void SetDoubleValue(
double _value );
793 void SetName(
const std::string& _name ) { name = _name; }
796 void SetValue(
const std::string& _value ) { value = _value; }
816 virtual void Print( FILE* cfile,
int depth )
const;
898 const char*
Attribute(
const char* name )
const;
906 const char* Attribute(
const char* name,
int* i )
const;
914 const char* Attribute(
const char* name,
double* d )
const;
923 int QueryIntAttribute(
const char* name,
int* _value )
const;
925 int QueryDoubleAttribute(
const char* name,
double* _value )
const;
929 int result = QueryDoubleAttribute( name, &d );
939 void SetAttribute(
const char* name,
const char * _value );
942 const char* Attribute(
const std::string& name )
const {
return Attribute( name.c_str() ); }
943 const char* Attribute(
const std::string& name,
int* i )
const {
return Attribute( name.c_str(), i ); }
944 const char* Attribute(
const std::string& name,
double* d )
const {
return Attribute( name.c_str(), d ); }
945 int QueryIntAttribute(
const std::string& name,
int* _value )
const {
return QueryIntAttribute( name.c_str(), _value ); }
946 int QueryDoubleAttribute(
const std::string& name,
double* _value )
const {
return QueryDoubleAttribute( name.c_str(), _value ); }
949 void SetAttribute(
const std::string& name,
const std::string& _value );
951 void SetAttribute(
const std::string& name,
int _value );
957 void SetAttribute(
const char * name,
int value );
962 void SetDoubleAttribute(
const char * name,
double value );
966 void RemoveAttribute(
const char * name );
968 void RemoveAttribute(
const std::string& name ) { RemoveAttribute (name.c_str ()); }
1008 const char* GetText()
const;
1013 virtual void Print( FILE* cfile,
int depth )
const;
1029 #ifdef TIXML_USE_STL 1030 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1061 virtual void Print( FILE* cfile,
int depth )
const;
1075 #ifdef TIXML_USE_STL 1076 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1100 SetValue( initValue );
1105 #ifdef TIXML_USE_STL 1109 SetValue( initValue );
1118 virtual void Print( FILE* cfile,
int depth )
const;
1138 #ifdef TIXML_USE_STL 1139 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1166 #ifdef TIXML_USE_STL 1169 const std::string& _encoding,
1170 const std::string& _standalone );
1175 const char* _encoding,
1176 const char* _standalone );
1184 const char *
Version()
const {
return version.c_str (); }
1186 const char *
Encoding()
const {
return encoding.c_str (); }
1193 virtual void Print( FILE* cfile,
int depth )
const;
1203 #ifdef TIXML_USE_STL 1204 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1235 virtual void Print( FILE* cfile,
int depth )
const;
1245 #ifdef TIXML_USE_STL 1246 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1267 #ifdef TIXML_USE_STL 1281 bool LoadFile(
TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1283 bool SaveFile()
const;
1285 bool LoadFile(
const char * filename,
TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1287 bool SaveFile(
const char * filename )
const;
1293 bool LoadFile( FILE*,
TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
1295 bool SaveFile( FILE* )
const;
1297 #ifdef TIXML_USE_STL 1298 bool LoadFile(
const std::string& filename,
TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING )
1303 bool SaveFile(
const std::string& filename )
const 1331 const char *
ErrorDesc()
const {
return errorDesc.c_str (); }
1382 errorLocation.row = errorLocation.col = 0;
1390 virtual void Print( FILE* cfile,
int depth = 0 )
const;
1401 #ifdef TIXML_USE_STL 1402 virtual void StreamIn( TIXML_ISTREAM * in,
TIXML_STRING * tag );
1509 TiXmlHandle FirstChild(
const char * value )
const;
1513 TiXmlHandle FirstChildElement(
const char * value )
const;
1518 TiXmlHandle Child(
const char* value,
int index )
const;
1527 TiXmlHandle ChildElement(
const char* value,
int index )
const;
1534 #ifdef TIXML_USE_STL 1535 TiXmlHandle FirstChild(
const std::string& _value )
const {
return FirstChild( _value.c_str() ); }
1536 TiXmlHandle FirstChildElement(
const std::string& _value )
const {
return FirstChildElement( _value.c_str() ); }
1538 TiXmlHandle Child(
const std::string& _value,
int index )
const {
return Child( _value.c_str(), index ); }
1539 TiXmlHandle ChildElement(
const std::string& _value,
int index )
const {
return ChildElement( _value.c_str(), index ); }
1547 TiXmlText*
Text()
const {
return ( ( node && node->ToText() ) ? node->ToText() : 0 ); }
1558 #pragma warning( pop )
const TiXmlNode * PreviousSibling() const
Navigate to a sibling node.
const char * Encoding() const
Encoding. Will return an empty string if none was found.
bool NoChildren() const
Returns true if this node has no children.
const char * Name() const
Return the name of this attribute.
bool operator<(const TiXmlAttribute &rhs) const
static int ToLower(int v, TiXmlEncoding encoding)
const char * Value() const
Return the value of this attribute.
virtual const TiXmlElement * ToElement() const
Cast to a more defined type. Will return null not of the requested type.
void SetName(const char *_name)
Set the name of this attribute.
void CopyTo(TiXmlUnknown *target) const
TiXmlHandle operator=(const TiXmlHandle &ref)
static bool IsWhiteSpace(char c)
void SetTabSize(int _tabsize)
std::istream & operator>>(std::istream &is, BufferPolicy &bp)
virtual const TiXmlText * ToText() const
Cast to a more defined type. Will return null if not of the requested type.
virtual const TiXmlDeclaration * ToDeclaration() const
Cast to a more defined type. Will return null not of the requested type.
const TiXmlNode * FirstChild() const
The first child of this node. Will be null if there are no children.
const TiXmlAttribute * FirstAttribute() const
Access the first attribute in this element.
virtual TiXmlText * ToText()
Cast to a more defined type. Will return null not of the requested type.
static bool condenseWhiteSpace
bool operator>(const TiXmlAttribute &rhs) const
const TIXML_STRING & NameTStr() const
void operator=(const TiXmlUnknown ©)
void SetUserData(void *user)
bool CDATA()
Queries whether this represents text using a CDATA section.
int ErrorCol()
The column where the error occured. See ErrorRow()
virtual TiXmlDocument * ToDocument()
Cast to a more defined type. Will return null not of the requested type.
void * userData
Field containing a generic user pointer.
const TiXmlAttribute * LastAttribute() const
Access the last attribute in this element.
TiXmlUnknown * Unknown() const
Return the handle as a TiXmlUnknown. This may return null;.
TiXmlAttribute * LastAttribute()
TiXmlDeclaration()
Construct an empty declaration.
const char * ErrorDesc() const
Contains a textual (english) description of the error if one occurs.
TiXmlUnknown(const TiXmlUnknown ©)
virtual TiXmlElement * ToElement()
Cast to a more defined type. Will return null if not of the requested type.
TiXmlNode * Node() const
Return the handle as a TiXmlNode. This may return null.
int QueryFloatAttribute(const char *name, float *_value) const
QueryFloatAttribute examines the attribute - see QueryIntAttribute().
const TiXmlElement * RootElement() const
int Column() const
See Row()
virtual const TiXmlDocument * ToDocument() const
Cast to a more defined type. Will return null not of the requested type.
virtual TiXmlUnknown * ToUnknown()
Cast to a more defined type. Will return null not of the requested type.
bool operator==(const TiXmlAttribute &rhs) const
virtual TiXmlDeclaration * ToDeclaration()
Cast to a more defined type. Will return null not of the requested type.
TiXmlAttribute(const char *_name, const char *_value)
Construct an attribute with a name and value.
virtual const TiXmlText * ToText() const
Cast to a more defined type. Will return null not of the requested type.
const char * Version() const
Version. Will return an empty string if none was found.
virtual TiXmlUnknown * ToUnknown()
Cast to a more defined type. Will return null if not of the requested type.
static void SetCondenseWhiteSpace(bool condense)
void operator=(const TiXmlText &base)
TiXmlHandle(TiXmlNode *_node)
Create a handle from any node (at any depth of the tree.) This can be a null pointer.
const char * Standalone() const
Is this a standalone document?
TiXmlText(const TiXmlText ©)
TiXmlAttributeSet attributeSet
TiXmlNode * LastChild()
The last child of this node. Will be null if there are no children.
const int TIXML_PATCH_VERSION
TiXmlNode * NextSibling()
virtual const TiXmlUnknown * ToUnknown() const
Cast to a more defined type. Will return null not of the requested type.
void SetValue(const char *_value)
virtual ~TiXmlDeclaration()
void SetCDATA(bool _cdata)
Turns on or off a CDATA representation of text.
TiXmlText(const char *initValue)
TIXML_OSTREAM & operator<<(TIXML_OSTREAM &out, const TiXmlNode &base)
const int TIXML_MAJOR_VERSION
virtual TiXmlDeclaration * ToDeclaration()
Cast to a more defined type. Will return null if not of the requested type.
const TiXmlAttribute * First() const
const int TIXML_MINOR_VERSION
TiXmlElement * RootElement()
virtual TiXmlText * ToText()
Cast to a more defined type. Will return null if not of the requested type.
TiXmlAttribute * FirstAttribute()
TiXmlText * Text() const
Return the handle as a TiXmlText. This may return null.
virtual const TiXmlUnknown * ToUnknown() const
Cast to a more defined type. Will return null if not of the requested type.
virtual const TiXmlDeclaration * ToDeclaration() const
Cast to a more defined type. Will return null if not of the requested type.
TiXmlCursor errorLocation
virtual const TiXmlDocument * ToDocument() const
Cast to a more defined type. Will return null if not of the requested type.
virtual const TiXmlComment * ToComment() const
Cast to a more defined type. Will return null if not of the requested type.
TiXmlNode * PreviousSibling()
void SetDocument(TiXmlDocument *doc)
static bool IsWhiteSpace(int c)
const TiXmlEncoding TIXML_DEFAULT_ENCODING
virtual TiXmlComment * ToComment()
Cast to a more defined type. Will return null if not of the requested type.
const TiXmlNode * LastChild() const
TiXmlNode * Parent()
One step up the DOM.
const TiXmlNode * Parent() const
void SetValue(const char *_value)
Set the value.
void CopyTo(TiXmlText *target) const
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
virtual const TiXmlElement * ToElement() const
Cast to a more defined type. Will return null if not of the requested type.
TiXmlHandle(const TiXmlHandle &ref)
Copy constructor.
const char * Value() const
const TiXmlAttribute * Last() const
virtual TiXmlDocument * ToDocument()
Cast to a more defined type. Will return null if not of the requested type.
const TiXmlNode * NextSibling() const
Navigate to a sibling node.
static const char * GetChar(const char *p, char *_value, int *length, TiXmlEncoding encoding)
static bool IsWhiteSpaceCondensed()
Return the current white space setting.
virtual TiXmlElement * ToElement()
Cast to a more defined type. Will return null not of the requested type.
TiXmlAttribute()
Construct an empty attribute.
TiXmlElement * Element() const
Return the handle as a TiXmlElement. This may return null.