diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 4099fc8..d5d8ebb 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -719,6 +719,7 @@ XMLNode::XMLNode( XMLDocument* doc ) : _parent( 0 ), _firstChild( 0 ), _lastChild( 0 ), _prev( 0 ), _next( 0 ), + _userData( 0 ), _memPool( 0 ) { } diff --git a/tinyxml2.h b/tinyxml2.h index 227550a..410faa2 100755 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -857,6 +857,20 @@ public: */ virtual bool Accept( XMLVisitor* visitor ) const = 0; + /** + Set user data into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void SetUserData(void* userData) { _userData = userData; } + + /** + Get user data set into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void* GetUserData() const { return _userData; } + protected: XMLNode( XMLDocument* ); virtual ~XMLNode(); @@ -873,6 +887,8 @@ protected: XMLNode* _prev; XMLNode* _next; + void* _userData; + private: MemPool* _memPool; void Unlink( XMLNode* child ); diff --git a/xmltest.cpp b/xmltest.cpp index 2009d1a..3fdc0bd 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -416,6 +416,7 @@ int main( int argc, const char ** argv ) } element->InsertEndChild( sub[2] ); XMLNode* comment = element->InsertFirstChild( doc->NewComment( "comment" ) ); + comment->SetUserData((void*)2); element->InsertAfterChild( comment, sub[0] ); element->InsertAfterChild( sub[0], sub[1] ); sub[2]->InsertFirstChild( doc->NewText( "& Text!" )); @@ -425,6 +426,7 @@ int main( int argc, const char ** argv ) XMLTest( "Programmatic DOM", 2, doc->FirstChildElement()->LastChildElement( "sub" )->IntAttribute( "attrib" ) ); XMLTest( "Programmatic DOM", "& Text!", doc->FirstChildElement()->LastChildElement( "sub" )->FirstChild()->ToText()->Value() ); + XMLTest("User data", 2, (int)comment->GetUserData()); // And now deletion: element->DeleteChild( sub[2] );