Support for 'long long' number values.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index c00f0e3..efaa29a 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -411,6 +411,12 @@
}
+void XMLUtil::ToStr( long long v, char* buffer, int bufferSize )
+{
+ TIXML_SNPRINTF( buffer, bufferSize, "%lld", v );
+}
+
+
void XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize )
{
TIXML_SNPRINTF( buffer, bufferSize, "%u", v );
@@ -446,6 +452,14 @@
return false;
}
+bool XMLUtil::ToLongLong( const char* str, long long* value )
+{
+ if ( TIXML_SSCANF( str, "%lld", value ) == 1 ) {
+ return true;
+ }
+ return false;
+}
+
bool XMLUtil::ToUnsigned( const char* str, unsigned *value )
{
if ( TIXML_SSCANF( str, "%u", value ) == 1 ) {
@@ -1166,6 +1180,14 @@
}
+void XMLAttribute::SetAttribute( long long v )
+{
+ char buf[BUF_SIZE];
+ XMLUtil::ToStr( v, buf, BUF_SIZE );
+ _value.SetStr( buf );
+}
+
+
void XMLAttribute::SetAttribute( unsigned v )
{
char buf[BUF_SIZE];
@@ -1322,6 +1344,19 @@
}
}
+void XMLElement::SetText( long long 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::SetBoolFirstChild( bool inBool )
{
@@ -1371,6 +1406,19 @@
}
+XMLError XMLElement::QueryLongLongText( long long* ival ) const
+{
+ if ( FirstChild() && FirstChild()->ToText() ) {
+ const char* t = FirstChild()->ToText()->Value();
+ if ( XMLUtil::ToLongLong( t, ival ) ) {
+ return XML_SUCCESS;
+ }
+ return XML_CAN_NOT_CONVERT_TEXT;
+ }
+ return XML_NO_TEXT_NODE;
+}
+
+
XMLError XMLElement::QueryUnsignedText( unsigned* uval ) const
{
if ( FirstChild() && FirstChild()->ToText() ) {