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