diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2014-02-08 21:59:14 +0000 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2014-02-08 21:59:14 +0000 |
commit | 2bd99cff86d3e8853e0cf776ae0cb6e6a18f2bb3 (patch) | |
tree | bac1bca21011a105b269f9686129fdea786705d5 | |
parent | 44d3ae5e9014c3f52c67d8f593605b77752264e6 (diff) |
Enable long long support for C++11 and for MSVC 2008+
git-svn-id: http://pugixml.googlecode.com/svn/trunk@967 99668b35-9821-0410-8761-19e4c4f06640
-rw-r--r-- | src/pugixml.cpp | 24 | ||||
-rw-r--r-- | src/pugixml.hpp | 9 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 874d611..10572eb 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -3394,9 +3394,17 @@ PUGI__NS_BEGIN int base = get_integer_base(value); #ifdef PUGIXML_WCHAR_MODE - return wcstoll(value, 0, base); + #ifdef PUGI__MSVC_CRT_VERSION + return _wcstoi64(value, 0, base); + #else + return wcstoll(value, 0, base); + #endif #else - return strtoll(value, 0, base); + #ifdef PUGI__MSVC_CRT_VERSION + return _strtoi64(value, 0, base); + #else + return strtoll(value, 0, base); + #endif #endif } @@ -3407,9 +3415,17 @@ PUGI__NS_BEGIN int base = get_integer_base(value); #ifdef PUGIXML_WCHAR_MODE - return wcstoull(value, 0, base); + #ifdef PUGI__MSVC_CRT_VERSION + return _wcstoui64(value, 0, base); + #else + return wcstoull(value, 0, base); + #endif #else - return strtoull(value, 0, base); + #ifdef PUGI__MSVC_CRT_VERSION + return _strtoui64(value, 0, base); + #else + return strtoull(value, 0, base); + #endif #endif } #endif diff --git a/src/pugixml.hpp b/src/pugixml.hpp index a988b90..bf8da03 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -63,6 +63,15 @@ # define PUGIXML_FUNCTION PUGIXML_API #endif +// If the platform is known to have long long support, enable long long functions +#ifndef PUGIXML_HAS_LONG_LONG +# if defined(__cplusplus) && __cplusplus >= 201103 +# define PUGIXML_HAS_LONG_LONG +# elif defined(_MSC_VER) && _MSC_VER >= 1400 +# define PUGIXML_HAS_LONG_LONG +# endif +#endif + // Character interface macros #ifdef PUGIXML_WCHAR_MODE # define PUGIXML_TEXT(t) L ## t |