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 std::map
15/// as Value container.
16//#  define JSON_USE_CPPTL_SMALLMAP 1
17/// If defined, indicates that Json specific container should be used
18/// (hash table & simple deque container with customizable allocator).
19/// THIS FEATURE IS STILL EXPERIMENTAL! There is know bugs: See #3177332
20//#  define JSON_VALUE_USE_INTERNAL_MAP 1
21/// Force usage of standard new/malloc based allocator instead of memory pool based allocator.
22/// The memory pools allocator used optimization (initializing Value and ValueInternalLink
23/// as if it was a POD) that may cause some validation tool to report errors.
24/// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined.
25//#  define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1
26
27// If non-zero, the library uses exceptions to report bad input instead of C
28// assertion macros. The default is to use exceptions.
29# ifndef JSON_USE_EXCEPTION
30# define JSON_USE_EXCEPTION 1
31# endif
32
33/// If defined, indicates that the source file is amalgated
34/// to prevent private header inclusion.
35/// Remarks: it is automatically defined in the generated amalgated header.
36// #define JSON_IS_AMALGAMATION
37
38
39# ifdef JSON_IN_CPPTL
40#  include <cpptl/config.h>
41#  ifndef JSON_USE_CPPTL
42#   define JSON_USE_CPPTL 1
43#  endif
44# endif
45
46# ifdef JSON_IN_CPPTL
47#  define JSON_API CPPTL_API
48# elif defined(JSON_DLL_BUILD)
49#  define JSON_API __declspec(dllexport)
50# elif defined(JSON_DLL)
51#  define JSON_API __declspec(dllimport)
52# else
53#  define JSON_API
54# endif
55
56// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for integer
57// Storages, and 64 bits integer support is disabled.
58// #define JSON_NO_INT64 1
59
60#if defined(_MSC_VER)  &&  _MSC_VER <= 1200 // MSVC 6
61// Microsoft Visual Studio 6 only support conversion from __int64 to double
62// (no conversion from unsigned __int64).
63#define JSON_USE_INT64_DOUBLE_CONVERSION 1
64#endif // if defined(_MSC_VER)  &&  _MSC_VER < 1200 // MSVC 6
65
66#if defined(_MSC_VER)  &&  _MSC_VER >= 1500 // MSVC 2008
67/// Indicates that the following function is deprecated.
68# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
69#endif
70
71#if !defined(JSONCPP_DEPRECATED)
72# define JSONCPP_DEPRECATED(message)
73#endif // if !defined(JSONCPP_DEPRECATED)
74
75namespace Json {
76   typedef int Int;
77   typedef unsigned int UInt;
78# if defined(JSON_NO_INT64)
79   typedef int LargestInt;
80   typedef unsigned int LargestUInt;
81#  undef JSON_HAS_INT64
82# else // if defined(JSON_NO_INT64)
83   // For Microsoft Visual use specific types as long long is not supported
84#  if defined(_MSC_VER) // Microsoft Visual Studio
85   typedef __int64 Int64;
86   typedef unsigned __int64 UInt64;
87#  else // if defined(_MSC_VER) // Other platforms, use long long
88   typedef long long int Int64;
89   typedef unsigned long long int UInt64;
90#  endif // if defined(_MSC_VER)
91   typedef Int64 LargestInt;
92   typedef UInt64 LargestUInt;
93#  define JSON_HAS_INT64
94# endif // if defined(JSON_NO_INT64)
95} // end namespace Json
96
97
98#endif // JSON_CONFIG_H_INCLUDED
99