version 1.2, 2007/08/29 20:17:03
|
version 1.3, 2007/08/31 17:18:10
|
|
|
| |
#include "StringConversion.h" | #include "StringConversion.h" |
| |
|
#include <errno.h> |
|
|
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
struct Uint32ToStringElement | struct Uint32ToStringElement |
|
|
while (isxdigit(*p)) | while (isxdigit(*p)) |
{ | { |
// Make sure we won't overflow when we multiply by 16 | // Make sure we won't overflow when we multiply by 16 |
if (x & 0xF000000000000000) |
if (x & PEGASUS_UINT64_LITERAL(0xF000000000000000)) |
{ | { |
return false; | return false; |
} | } |
|
|
while ((*p >= '0') && (*p <= '7')) | while ((*p >= '0') && (*p <= '7')) |
{ | { |
// Make sure we won't overflow when we multiply by 8 | // Make sure we won't overflow when we multiply by 8 |
if (x & 0xE000000000000000) |
if (x & PEGASUS_UINT64_LITERAL(0xE000000000000000)) |
{ | { |
return false; | return false; |
} | } |
|
|
while ((*p == '0') || (*p == '1')) | while ((*p == '0') || (*p == '1')) |
{ | { |
// Make sure we won't overflow when we multiply by 2 | // Make sure we won't overflow when we multiply by 2 |
if (x & 0x8000000000000000) |
if (x & PEGASUS_UINT64_LITERAL(0x8000000000000000)) |
{ | { |
return false; | return false; |
} | } |
|
|
return !(x & PEGASUS_UINT64_LITERAL(0xFFFFFFFF00000000)); | return !(x & PEGASUS_UINT64_LITERAL(0xFFFFFFFF00000000)); |
case CIMTYPE_UINT64: | case CIMTYPE_UINT64: |
return true; | return true; |
|
default: |
|
break; |
} | } |
| |
return false; | return false; |
|
|
PEGASUS_SINT64_LITERAL(0xFFFFFFFF80000000))); | PEGASUS_SINT64_LITERAL(0xFFFFFFFF80000000))); |
case CIMTYPE_SINT64: | case CIMTYPE_SINT64: |
return true; | return true; |
|
default: |
|
break; |
} | } |
| |
return false; | return false; |