JsonCpp project page JsonCpp home page

config.h
Go to the documentation of this file.
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 
10 //# define JSON_IN_CPPTL 1
11 
13 //# define JSON_USE_CPPTL 1
17 //# define JSON_USE_CPPTL_SMALLMAP 1
18 
19 // If non-zero, the library uses exceptions to report bad input instead of C
20 // assertion macros. The default is to use exceptions.
21 #ifndef JSON_USE_EXCEPTION
22 #define JSON_USE_EXCEPTION 1
23 #endif
24 
28 // #define JSON_IS_AMALGAMATION
29 
30 #ifdef JSON_IN_CPPTL
31 #include <cpptl/config.h>
32 #ifndef JSON_USE_CPPTL
33 #define JSON_USE_CPPTL 1
34 #endif
35 #endif
36 
37 #ifdef JSON_IN_CPPTL
38 #define JSON_API CPPTL_API
39 #elif defined(JSON_DLL_BUILD)
40 #if defined(_MSC_VER)
41 #define JSON_API __declspec(dllexport)
42 #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
43 #endif // if defined(_MSC_VER)
44 #elif defined(JSON_DLL)
45 #if defined(_MSC_VER)
46 #define JSON_API __declspec(dllimport)
47 #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
48 #endif // if defined(_MSC_VER)
49 #endif // ifdef JSON_IN_CPPTL
50 #if !defined(JSON_API)
51 #define JSON_API
52 #endif
53 
54 // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
55 // integer
56 // Storages, and 64 bits integer support is disabled.
57 // #define JSON_NO_INT64 1
58 
59 #if defined(_MSC_VER) && _MSC_VER <= 1200 // MSVC 6
60 // Microsoft Visual Studio 6 only support conversion from __int64 to double
61 // (no conversion from unsigned __int64).
62 #define JSON_USE_INT64_DOUBLE_CONVERSION 1
63 // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
64 // characters in the debug information)
65 // All projects I've ever seen with VS6 were using this globally (not bothering
66 // with pragma push/pop).
67 #pragma warning(disable : 4786)
68 #endif // if defined(_MSC_VER) && _MSC_VER < 1200 // MSVC 6
69 
70 #if defined(_MSC_VER) && _MSC_VER >= 1500 // MSVC 2008
71 #define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
73 #elif defined(__clang__) && defined(__has_feature)
74 #if __has_feature(attribute_deprecated_with_message)
75 #define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
76 #endif
77 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
78 #define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
79 #elif defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
80 #define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
81 #endif
82 
83 #if !defined(JSONCPP_DEPRECATED)
84 #define JSONCPP_DEPRECATED(message)
85 #endif // if !defined(JSONCPP_DEPRECATED)
86 
87 namespace Json {
88 typedef int Int;
89 typedef unsigned int UInt;
90 #if defined(JSON_NO_INT64)
91 typedef int LargestInt;
92 typedef unsigned int LargestUInt;
93 #undef JSON_HAS_INT64
94 #else // if defined(JSON_NO_INT64)
95 // For Microsoft Visual use specific types as long long is not supported
96 #if defined(_MSC_VER) // Microsoft Visual Studio
97 typedef __int64 Int64;
98 typedef unsigned __int64 UInt64;
99 #else // if defined(_MSC_VER) // Other platforms, use long long
100 typedef long long int Int64;
101 typedef unsigned long long int UInt64;
102 #endif // if defined(_MSC_VER)
103 typedef Int64 LargestInt;
104 typedef UInt64 LargestUInt;
105 #define JSON_HAS_INT64
106 #endif // if defined(JSON_NO_INT64)
107 } // end namespace Json
108 
109 #endif // JSON_CONFIG_H_INCLUDED
Int64 LargestInt
Definition: config.h:103
unsigned __int64 UInt64
Definition: config.h:98
UInt64 LargestUInt
Definition: config.h:104
JSON (JavaScript Object Notation).
Definition: config.h:87
unsigned int UInt
Definition: config.h:89
__int64 Int64
Definition: config.h:97
int Int
Definition: config.h:88