- Moved definition of Json::Int and Json::UInt to config.h which compiler detection logic to define them to 64 bits integer if JSON_NO_INT64 is not defined.
- Added Json::ArrayIndex as an unsigned int to forwards.h
- Modified Json::Value to consistently use Json::ArrayIndex.
- Added int/unsigned int constructor overload to Json::Value to avoid ambiguous constructor call.
- Modified jsontestrunner/main.cpp to use Json::valueToString for Value::asInt() conversion to string.
- Modified Json::Reader to only overflow to double when the number is too large (previous code relied on the fact that an int fitted in a double without precision loss).
- Generalized uintToString() helpers and buffer size to automatically adapt to the precision of Json::UInt.
- Added specific conversion logic for UInt to double conversion on Microsoft Visual Studio 6 which only support __int64 to double conversion (unsigned __int64 conversion is not supported)
- Added test for 64 bits parsing/writing. Notes: those will fail when compiled with JSON_NO_INT64 (more dev required to adapt).
diff --git a/include/json/config.h b/include/json/config.h
index 5d334cb..a0fed8a 100644
--- a/include/json/config.h
+++ b/include/json/config.h
@@ -40,4 +40,32 @@
 #  define JSON_API
 # endif
 
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for integer
+// Storages.
+// #define JSON_NO_INT64 1
+
+#if defined(_MSC_VER)  &&  _MSC_VER <= 1200 // MSVC 6
+// Microsoft Visual Studio 6 only support conversion from __int64 to double
+// (no conversion from unsigned __int64).
+#define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif // if defined(_MSC_VER)  &&  _MSC_VER < 1200 // MSVC 6
+
+
+namespace Json {
+# if defined(JSON_NO_INT64)
+   typedef int Int;
+   typedef unsigned int UInt;
+# else // if defined(JSON_NO_INT64)
+   // For Microsoft Visual use specific types as long long is not supported
+#  if defined(_MSC_VER) // Microsoft Visual Studio
+   typedef __int64 Int;
+   typedef unsigned __int64 UInt;
+#  else // if defined(_MSC_VER) // Other platforms, use long long
+   typedef long long int Int;
+   typedef unsigned long long int UInt;
+#  endif // if defined(_MSC_VER)
+# endif // if defined(JSON_NO_INT64)
+} // end namespace Json
+
+
 #endif // JSON_CONFIG_H_INCLUDED