add int64 support
This commit is contained in:
65
tinyxml2.cpp
65
tinyxml2.cpp
@@ -556,6 +556,12 @@ void XMLUtil::ToStr( double v, char* buffer, int bufferSize )
|
||||
}
|
||||
|
||||
|
||||
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 @@ bool XMLUtil::ToFloat( const char* str, float* value )
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool XMLUtil::ToDouble( const char* str, double* value )
|
||||
{
|
||||
if ( TIXML_SSCANF( str, "%lf", value ) == 1 ) {
|
||||
@@ -608,6 +615,15 @@ bool XMLUtil::ToDouble( const char* str, double* value )
|
||||
}
|
||||
|
||||
|
||||
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::QueryUnsignedValue( unsigned int* value ) const
|
||||
}
|
||||
|
||||
|
||||
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( unsigned v )
|
||||
}
|
||||
|
||||
|
||||
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( unsigned v )
|
||||
}
|
||||
|
||||
|
||||
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::QueryUnsignedText( unsigned* uval ) const
|
||||
}
|
||||
|
||||
|
||||
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, unsigned v )
|
||||
}
|
||||
|
||||
|
||||
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];
|
||||
|
||||
Reference in New Issue
Block a user