diff options
Diffstat (limited to 'src')
| -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  | 
