1 // Copyright 2007-2010 Baptiste Lepilleur 2 // Distributed under MIT license, or public domain if desired and 3 // recognized in your jurisdiction. 4 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5 6 #ifndef JSON_CONFIG_H_INCLUDED 7 #define JSON_CONFIG_H_INCLUDED 8 9 /// If defined, indicates that json library is embedded in CppTL library. 10 //# define JSON_IN_CPPTL 1 11 12 /// If defined, indicates that json may leverage CppTL library 13 //# define JSON_USE_CPPTL 1 14 /// If defined, indicates that cpptl vector based map should be used instead of 15 /// std::map 16 /// as Value container. 17 //# define JSON_USE_CPPTL_SMALLMAP 1 18 /// If defined, indicates that Json specific container should be used 19 /// (hash table & simple deque container with customizable allocator). 20 /// THIS FEATURE IS STILL EXPERIMENTAL! There is know bugs: See #3177332 21 //# define JSON_VALUE_USE_INTERNAL_MAP 1 22 /// Force usage of standard new/malloc based allocator instead of memory pool 23 /// based allocator. 24 /// The memory pools allocator used optimization (initializing Value and 25 /// ValueInternalLink 26 /// as if it was a POD) that may cause some validation tool to report errors. 27 /// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined. 28 //# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1 29 30 // If non-zero, the library uses exceptions to report bad input instead of C 31 // assertion macros. The default is to use exceptions. 32 #ifndef JSON_USE_EXCEPTION 33 #define JSON_USE_EXCEPTION 1 34 #endif 35 36 /// If defined, indicates that the source file is amalgated 37 /// to prevent private header inclusion. 38 /// Remarks: it is automatically defined in the generated amalgated header. 39 // #define JSON_IS_AMALGAMATION 40 41 #ifdef JSON_IN_CPPTL 42 #include <cpptl/config.h> 43 #ifndef JSON_USE_CPPTL 44 #define JSON_USE_CPPTL 1 45 #endif 46 #endif 47 48 #ifdef JSON_IN_CPPTL 49 #define JSON_API CPPTL_API 50 #elif defined(JSON_DLL_BUILD) 51 #if defined(_MSC_VER) 52 #define JSON_API __declspec(dllexport) 53 #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING 54 #endif // if defined(_MSC_VER) 55 #elif defined(JSON_DLL) 56 #if defined(_MSC_VER) 57 #define JSON_API __declspec(dllimport) 58 #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING 59 #endif // if defined(_MSC_VER) 60 #endif // ifdef JSON_IN_CPPTL 61 #if !defined(JSON_API) 62 #define JSON_API 63 #endif 64 65 // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for 66 // integer 67 // Storages, and 64 bits integer support is disabled. 68 // #define JSON_NO_INT64 1 69 70 #if defined(_MSC_VER) && _MSC_VER <= 1200 // MSVC 6 71 // Microsoft Visual Studio 6 only support conversion from __int64 to double 72 // (no conversion from unsigned __int64). 73 #define JSON_USE_INT64_DOUBLE_CONVERSION 1 74 // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255' 75 // characters in the debug information) 76 // All projects I've ever seen with VS6 were using this globally (not bothering 77 // with pragma push/pop). 78 #pragma warning(disable : 4786) 79 #endif // if defined(_MSC_VER) && _MSC_VER < 1200 // MSVC 6 80 81 #if defined(_MSC_VER) && _MSC_VER >= 1500 // MSVC 2008 82 /// Indicates that the following function is deprecated. 83 #define JSONCPP_DEPRECATED(message) __declspec(deprecated(message)) 84 #endif 85 86 #if !defined(JSONCPP_DEPRECATED) 87 #define JSONCPP_DEPRECATED(message) 88 #endif // if !defined(JSONCPP_DEPRECATED) 89 90 namespace Json { 91 typedef int Int; 92 typedef unsigned int UInt; 93 #if defined(JSON_NO_INT64) 94 typedef int LargestInt; 95 typedef unsigned int LargestUInt; 96 #undef JSON_HAS_INT64 97 #else // if defined(JSON_NO_INT64) 98 // For Microsoft Visual use specific types as long long is not supported 99 #if defined(_MSC_VER) // Microsoft Visual Studio 100 typedef __int64 Int64; 101 typedef unsigned __int64 UInt64; 102 #else // if defined(_MSC_VER) // Other platforms, use long long 103 typedef long long int Int64; 104 typedef unsigned long long int UInt64; 105 #endif // if defined(_MSC_VER) 106 typedef Int64 LargestInt; 107 typedef UInt64 LargestUInt; 108 #define JSON_HAS_INT64 109 #endif // if defined(JSON_NO_INT64) 110 } // end namespace Json 111 112 #endif // JSON_CONFIG_H_INCLUDED 113