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 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 
     75 namespace 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