mirror of
https://github.com/Kitware/CMake.git
synced 2025-05-09 23:08:18 +08:00

* Deprecation removals previously specific to MSVC/Intel now also used by clang * String literals were assigned to non const pointers. These are stored in mutable arrays now * An implicit function pointer to pointer conversion is a Microsoft extension warning is suppressed by an explicit reinterpret_cast * The MSVC specific deprecation macro for jsoncpp was moved after the clang macro to avoid redefinition warnings. This is consistent with how jsoncpp fixed the issue in 36d8cfd7
195 lines
6.5 KiB
C++
195 lines
6.5 KiB
C++
// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
|
|
// Distributed under MIT license, or public domain if desired and
|
|
// recognized in your jurisdiction.
|
|
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
|
|
|
|
#ifndef JSON_CONFIG_H_INCLUDED
|
|
#define JSON_CONFIG_H_INCLUDED
|
|
|
|
// Include KWSys Large File Support configuration.
|
|
#include <cmsys/Configure.h>
|
|
|
|
#include <stddef.h>
|
|
#include <string> //typedef String
|
|
#include <stdint.h> //typedef int64_t, uint64_t
|
|
|
|
#if defined(_MSC_VER)
|
|
# pragma warning(push,1)
|
|
#endif
|
|
|
|
/// If defined, indicates that json library is embedded in CppTL library.
|
|
//# define JSON_IN_CPPTL 1
|
|
|
|
/// If defined, indicates that json may leverage CppTL library
|
|
//# define JSON_USE_CPPTL 1
|
|
/// If defined, indicates that cpptl vector based map should be used instead of
|
|
/// std::map
|
|
/// as Value container.
|
|
//# define JSON_USE_CPPTL_SMALLMAP 1
|
|
|
|
// If non-zero, the library uses exceptions to report bad input instead of C
|
|
// assertion macros. The default is to use exceptions.
|
|
#ifndef JSON_USE_EXCEPTION
|
|
#define JSON_USE_EXCEPTION 1
|
|
#endif
|
|
|
|
/// If defined, indicates that the source file is amalgated
|
|
/// to prevent private header inclusion.
|
|
/// Remarks: it is automatically defined in the generated amalgated header.
|
|
// #define JSON_IS_AMALGAMATION
|
|
|
|
#ifdef JSON_IN_CPPTL
|
|
#include <cpptl/config.h>
|
|
#ifndef JSON_USE_CPPTL
|
|
#define JSON_USE_CPPTL 1
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef JSON_IN_CPPTL
|
|
#define JSON_API CPPTL_API
|
|
#elif defined(JSON_DLL_BUILD)
|
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
#define JSON_API __declspec(dllexport)
|
|
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
|
#endif // if defined(_MSC_VER)
|
|
#elif defined(JSON_DLL)
|
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
#define JSON_API __declspec(dllimport)
|
|
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
|
#endif // if defined(_MSC_VER)
|
|
#endif // ifdef JSON_IN_CPPTL
|
|
#if !defined(JSON_API)
|
|
#define JSON_API
|
|
#endif
|
|
|
|
// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
|
|
// integer
|
|
// Storages, and 64 bits integer support is disabled.
|
|
// #define JSON_NO_INT64 1
|
|
|
|
#if defined(_MSC_VER) // MSVC
|
|
# if _MSC_VER <= 1200 // MSVC 6
|
|
// Microsoft Visual Studio 6 only support conversion from __int64 to double
|
|
// (no conversion from unsigned __int64).
|
|
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
|
// Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
|
|
// characters in the debug information)
|
|
// All projects I've ever seen with VS6 were using this globally (not bothering
|
|
// with pragma push/pop).
|
|
# pragma warning(disable : 4786)
|
|
# endif // MSVC 6
|
|
|
|
#endif // defined(_MSC_VER)
|
|
|
|
// In c++11 the override keyword allows you to explicity define that a function
|
|
// is intended to override the base-class version. This makes the code more
|
|
// managable and fixes a set of common hard-to-find bugs.
|
|
#if __cplusplus >= 201103L
|
|
# define JSONCPP_OVERRIDE override
|
|
# define JSONCPP_NOEXCEPT noexcept
|
|
#elif defined(_MSC_VER) && _MSC_VER > 1600 && _MSC_VER < 1900
|
|
# define JSONCPP_OVERRIDE override
|
|
# define JSONCPP_NOEXCEPT throw()
|
|
#elif defined(_MSC_VER) && _MSC_VER >= 1900
|
|
# define JSONCPP_OVERRIDE override
|
|
# define JSONCPP_NOEXCEPT noexcept
|
|
#else
|
|
# define JSONCPP_OVERRIDE
|
|
# define JSONCPP_NOEXCEPT throw()
|
|
#endif
|
|
|
|
#ifndef JSON_HAS_RVALUE_REFERENCES
|
|
|
|
#if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010
|
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
#endif // MSVC >= 2010
|
|
|
|
#ifdef __clang__
|
|
#if __has_feature(cxx_rvalue_references)
|
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
#endif // has_feature
|
|
|
|
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
|
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
|
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
|
#endif // GXX_EXPERIMENTAL
|
|
|
|
#endif // __clang__ || __GNUC__
|
|
|
|
#endif // not defined JSON_HAS_RVALUE_REFERENCES
|
|
|
|
#ifndef JSON_HAS_RVALUE_REFERENCES
|
|
#define JSON_HAS_RVALUE_REFERENCES 0
|
|
#endif
|
|
|
|
#ifdef __clang__
|
|
# if __has_extension(attribute_deprecated_with_message)
|
|
# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
|
|
# endif
|
|
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
|
# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
|
|
# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
|
|
# elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
|
# define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
|
|
# endif // GNUC version
|
|
#elif defined(_MSC_VER) && _MSC_VER >= 1500 // MSVC 2008
|
|
/// Indicates that the following function is deprecated.
|
|
# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
|
|
#endif // __clang__ || __GNUC__ || _MSC_VER
|
|
|
|
#undef JSONCPP_DEPRECATED // no deprecations in CMake copy
|
|
#if !defined(JSONCPP_DEPRECATED)
|
|
#define JSONCPP_DEPRECATED(message)
|
|
#endif // if !defined(JSONCPP_DEPRECATED)
|
|
|
|
#if __GNUC__ >= 6
|
|
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
|
#endif
|
|
|
|
#if !defined(JSON_IS_AMALGAMATION)
|
|
|
|
# include "version.h"
|
|
|
|
# if JSONCPP_USING_SECURE_MEMORY
|
|
# include "allocator.h" //typedef Allocator
|
|
# endif
|
|
|
|
#endif // if !defined(JSON_IS_AMALGAMATION)
|
|
|
|
namespace Json {
|
|
typedef int Int;
|
|
typedef unsigned int UInt;
|
|
#if defined(JSON_NO_INT64)
|
|
typedef int LargestInt;
|
|
typedef unsigned int LargestUInt;
|
|
#undef JSON_HAS_INT64
|
|
#else // if defined(JSON_NO_INT64)
|
|
// For Microsoft Visual use specific types as long long is not supported
|
|
#if defined(_MSC_VER) // Microsoft Visual Studio
|
|
typedef __int64 Int64;
|
|
typedef unsigned __int64 UInt64;
|
|
#else // if defined(_MSC_VER) // Other platforms, use long long
|
|
typedef int64_t Int64;
|
|
typedef uint64_t UInt64;
|
|
#endif // if defined(_MSC_VER)
|
|
typedef Int64 LargestInt;
|
|
typedef UInt64 LargestUInt;
|
|
#define JSON_HAS_INT64
|
|
#endif // if defined(JSON_NO_INT64)
|
|
#if JSONCPP_USING_SECURE_MEMORY
|
|
#define JSONCPP_STRING std::basic_string<char, std::char_traits<char>, Json::SecureAllocator<char> >
|
|
#define JSONCPP_OSTRINGSTREAM std::basic_ostringstream<char, std::char_traits<char>, Json::SecureAllocator<char> >
|
|
#define JSONCPP_OSTREAM std::basic_ostream<char, std::char_traits<char>>
|
|
#define JSONCPP_ISTRINGSTREAM std::basic_istringstream<char, std::char_traits<char>, Json::SecureAllocator<char> >
|
|
#define JSONCPP_ISTREAM std::istream
|
|
#else
|
|
#define JSONCPP_STRING std::string
|
|
#define JSONCPP_OSTRINGSTREAM std::ostringstream
|
|
#define JSONCPP_OSTREAM std::ostream
|
|
#define JSONCPP_ISTRINGSTREAM std::istringstream
|
|
#define JSONCPP_ISTREAM std::istream
|
|
#endif // if JSONCPP_USING_SECURE_MEMORY
|
|
} // end namespace Json
|
|
|
|
#endif // JSON_CONFIG_H_INCLUDED
|