diff --git a/tinyxml2.h b/tinyxml2.h index 7f6e611..b9cdbd7 100644 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -1187,10 +1187,10 @@ class XMLHandle { public: /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - //XMLHandle( XMLNode* _node ) { node = _node; } - XMLHandle( const XMLNode* _node ) { node = const_cast(_node); } - //XMLHandle( XMLNode& _node ) { node = &_node; } - XMLHandle( const XMLNode& _node ) { node = const_cast(&_node); } + XMLHandle( XMLNode* _node ) { node = _node; } + //XMLHandle( const XMLNode* _node ) { node = const_cast(_node); } + XMLHandle( XMLNode& _node ) { node = &_node; } + //XMLHandle( const XMLNode& _node ) { node = const_cast(&_node); } XMLHandle( const XMLHandle& ref ) { node = ref.node; } XMLHandle operator=( XMLHandle ref ) { node = ref.node; return *this; } @@ -1204,14 +1204,14 @@ public: XMLHandle LastChild() { return XMLHandle( node ? node->LastChild() : 0 ); } const XMLHandle LastChild() const { return XMLHandle( node ? node->LastChild() : 0 ); } - XMLHandle LastChildElement( const char* _value=0 ) { return XMLHandle( node ? node->LastChildElement() : 0 ); } - const XMLHandle LastChildElement( const char* _value=0 ) const { return XMLHandle( node ? node->LastChildElement() : 0 ); } + XMLHandle LastChildElement( const char* _value=0 ) { return XMLHandle( node ? node->LastChildElement( _value ) : 0 ); } + const XMLHandle LastChildElement( const char* _value=0 ) const { return XMLHandle( node ? node->LastChildElement( _value ) : 0 ); } XMLHandle PreviousSibling() { return XMLHandle( node ? node->PreviousSibling() : 0 ); } const XMLHandle PreviousSibling() const { return XMLHandle( node ? node->PreviousSibling() : 0 ); } - XMLHandle PreviousSiblingElement( const char* _value=0 ) { return XMLHandle( node ? node->PreviousSiblingElement() : 0 ); } - const XMLHandle PreviousSiblingElement( const char* _value=0 ) const { return XMLHandle( node ? node->PreviousSiblingElement() : 0 ); } + XMLHandle PreviousSiblingElement( const char* _value=0 ) { return XMLHandle( node ? node->PreviousSiblingElement( _value ) : 0 ); } + const XMLHandle PreviousSiblingElement( const char* _value=0 ) const { return XMLHandle( node ? node->PreviousSiblingElement( _value ) : 0 ); } XMLHandle NextSibling() { return XMLHandle( node ? node->NextSibling() : 0 ); } const XMLHandle NextSibling() const { return XMLHandle( node ? node->NextSibling() : 0 ); } diff --git a/xmltest.cpp b/xmltest.cpp index 20e3fa9..9ed4a5e 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -726,6 +726,22 @@ int main( int /*argc*/, const char ** /*argv*/ ) XMLTest( "Clone and Equal", 4, count ); } + // -------- Handles ------------ + { + static const char* xml = "Text"; + XMLDocument doc; + doc.Parse( xml ); + const XMLDocument& docC = doc; + + XMLElement* ele = XMLHandle( doc ).FirstChildElement( "element" ).FirstChild().ToElement(); + XMLTest( "Handle, success, mutable", ele->Value(), "sub" ); + + ele = XMLHandle( docC ).FirstChildElement( "element" ).FirstChild().ToElement(); + XMLTest( "Handle, success, mutable", ele->Value(), "sub" ); + + } + + // ----------- Performance tracking -------------- { #if defined( _MSC_VER )