Home | History | Annotate | Download | only in json
      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