diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 0338beb..5e3f4aa 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -1270,6 +1270,72 @@ void XMLElement::SetText( const char* inText ) } } + +void XMLElement::SetText( int inNum ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( inNum, buf, BUF_SIZE ); + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( buf ); + else { + XMLText* theText = GetDocument()->NewText( buf ); + InsertFirstChild( theText ); + } +} + + +void XMLElement::SetText( unsigned inNum ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( inNum, buf, BUF_SIZE ); + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( buf ); + else { + XMLText* theText = GetDocument()->NewText( buf ); + InsertFirstChild( theText ); + } +} + + +void XMLElement::SetText( bool inBool ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( inBool, buf, BUF_SIZE ); + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( buf ); + else { + XMLText* theText = GetDocument()->NewText( buf ); + InsertFirstChild( theText ); + } +} + + +void XMLElement::SetText( double inNum ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( inNum, buf, BUF_SIZE ); + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( buf ); + else { + XMLText* theText = GetDocument()->NewText( buf ); + InsertFirstChild( theText ); + } +} + + +void XMLElement::SetText( float inNum ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( inNum, buf, BUF_SIZE ); + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( buf ); + else { + XMLText* theText = GetDocument()->NewText( buf ); + InsertFirstChild( theText ); + } +} + + XMLError XMLElement::QueryIntText( int* ival ) const { if ( FirstChild() && FirstChild()->ToText() ) { diff --git a/tinyxml2.h b/tinyxml2.h index 2330ab9..1c60766 100755 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -1405,6 +1405,22 @@ public: */ void SetText( const char* inText ); + /// Sets the text to the given number. + void SetText( int inNum ); + + /// Sets the text to the given number. + void SetText( unsigned inNum ); + + /// Sets the text to the given boolean. + void SetText( bool inBool ); + + /// Sets the text to the given double. + void SetText( double inNum ); + + /// Sets the text to the given float. + void SetText( float inNum ); + + /** Convenience method to query the value of a child text node. This is probably best shown by example. Given you have a document is this form: @@ -1455,6 +1471,8 @@ public: virtual bool ShallowEqual( const XMLNode* compare ) const; private: + enum { BUF_SIZE = 200 }; + XMLElement( XMLDocument* doc ); virtual ~XMLElement(); XMLElement( const XMLElement& ); // not supported