add int64 support
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index bfd8d1f..7a804f5 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -556,6 +556,12 @@
 }

 

 

+void XMLUtil::ToStr(int64_t v, char* buffer, int bufferSize)

+{

+	TIXML_SNPRINTF(buffer, bufferSize, "%lld", v);

+}

+

+

 bool XMLUtil::ToInt( const char* str, int* value )

 {

     if ( TIXML_SSCANF( str, "%d", value ) == 1 ) {

@@ -599,6 +605,7 @@
     return false;

 }

 

+

 bool XMLUtil::ToDouble( const char* str, double* value )

 {

     if ( TIXML_SSCANF( str, "%lf", value ) == 1 ) {

@@ -608,6 +615,15 @@
 }

 

 

+bool XMLUtil::ToInt64(const char* str, int64_t* value)

+{

+	if (TIXML_SSCANF(str, "%lld", value) == 1) {

+		return true;

+	}

+	return false;

+}

+

+

 char* XMLDocument::Identify( char* p, XMLNode** node )

 {

     TIXMLASSERT( node );

@@ -1301,6 +1317,15 @@
 }

 

 

+XMLError XMLAttribute::QueryInt64Value(int64_t* value) const

+{

+	if (XMLUtil::ToInt64(Value(), value)) {

+		return XML_SUCCESS;

+	}

+	return XML_WRONG_ATTRIBUTE_TYPE;

+}

+

+

 XMLError XMLAttribute::QueryBoolValue( bool* value ) const

 {

     if ( XMLUtil::ToBool( Value(), value )) {

@@ -1350,6 +1375,15 @@
 }

 

 

+void XMLAttribute::SetAttribute(int64_t v)

+{

+	char buf[BUF_SIZE];

+	XMLUtil::ToStr(v, buf, BUF_SIZE);

+	_value.SetStr(buf);

+}

+

+

+

 void XMLAttribute::SetAttribute( bool v )

 {

     char buf[BUF_SIZE];

@@ -1450,7 +1484,15 @@
 }

 

 

-void XMLElement::SetText( bool v ) 

+void XMLElement::SetText(int64_t v)

+{

+	char buf[BUF_SIZE];

+	XMLUtil::ToStr(v, buf, BUF_SIZE);

+	SetText(buf);

+}

+

+

+void XMLElement::SetText( bool v )

 {

     char buf[BUF_SIZE];

     XMLUtil::ToStr( v, buf, BUF_SIZE );

@@ -1500,6 +1542,19 @@
 }

 

 

+XMLError XMLElement::QueryInt64Text(int64_t* ival) const

+{

+	if (FirstChild() && FirstChild()->ToText()) {

+		const char* t = FirstChild()->Value();

+		if (XMLUtil::ToInt64(t, ival)) {

+			return XML_SUCCESS;

+		}

+		return XML_CAN_NOT_CONVERT_TEXT;

+	}

+	return XML_NO_TEXT_NODE;

+}

+

+

 XMLError XMLElement::QueryBoolText( bool* bval ) const

 {

     if ( FirstChild() && FirstChild()->ToText() ) {

@@ -2263,6 +2318,14 @@
 }

 

 

+void XMLPrinter::PushAttribute(const char* name, int64_t v)

+{

+	char buf[BUF_SIZE];

+	XMLUtil::ToStr(v, buf, BUF_SIZE);

+	PushAttribute(name, buf);

+}

+

+

 void XMLPrinter::PushAttribute( const char* name, bool v )

 {

     char buf[BUF_SIZE];