minor changes to hex parsing
This commit is contained in:
@@ -608,17 +608,17 @@ void XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize )
|
||||
TIXML_SNPRINTF(buffer, bufferSize, "%llu", (long long)v);
|
||||
}
|
||||
|
||||
bool XMLUtil::ToInt( const char* str, int* value )
|
||||
bool XMLUtil::ToInt(const char* str, int* value)
|
||||
{
|
||||
if ( TIXML_SSCANF( str, IsPrefixHex(str) ? "%x" : "%d", value ) == 1 ) {
|
||||
if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%d", value) == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool XMLUtil::ToUnsigned( const char* str, unsigned *value )
|
||||
bool XMLUtil::ToUnsigned(const char* str, unsigned* value)
|
||||
{
|
||||
if ( TIXML_SSCANF( str, IsPrefixHex(str) ? "%x" : "%u", value ) == 1 ) {
|
||||
if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%u", value) == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -591,10 +591,8 @@ public:
|
||||
}
|
||||
|
||||
inline static bool IsPrefixHex( const char* p) {
|
||||
while (p && *p != '\0' && !isdigit(*p)) {
|
||||
++p;
|
||||
}
|
||||
return *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
|
||||
p = SkipWhiteSpace(p, 0);
|
||||
return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
|
||||
}
|
||||
|
||||
inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
|
||||
|
||||
10
xmltest.cpp
10
xmltest.cpp
@@ -1675,21 +1675,21 @@ int main( int argc, const char ** argv )
|
||||
}
|
||||
|
||||
{
|
||||
//API:IntText(),UnsignedText(),Int64Text(), hex value test
|
||||
const char* xml = "<point> <IntText> -0x2020</IntText> <UnsignedText>0x2020</UnsignedText> \
|
||||
<Int64Text> +0x1234</Int64Text></point>";
|
||||
// hex value test
|
||||
const char* xml = "<point> <IntText> 0x2020</IntText> <UnsignedText>0X2020</UnsignedText> \
|
||||
<Int64Text> 0x1234</Int64Text></point>";
|
||||
XMLDocument doc;
|
||||
doc.Parse(xml);
|
||||
|
||||
const XMLElement* pointElement = doc.RootElement();
|
||||
int test1 = pointElement->FirstChildElement("IntText")->IntText();
|
||||
XMLTest("IntText() hex value test", -0x2020, test1);
|
||||
XMLTest("IntText() hex value test", 0x2020, test1);
|
||||
|
||||
unsigned test2 = pointElement->FirstChildElement("UnsignedText")->UnsignedText();
|
||||
XMLTest("UnsignedText() hex value test", static_cast<unsigned>(0x2020), test2);
|
||||
|
||||
int64_t test3 = pointElement->FirstChildElement("Int64Text")->Int64Text();
|
||||
XMLTest("Int64Text() hex value test", static_cast<int64_t>(+0x1234), test3);
|
||||
XMLTest("Int64Text() hex value test", static_cast<int64_t>(0x1234), test3);
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user