| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #ifndef JSONDEFS_H
- #define JSONDEFS_H
- /*
- Defines all of the types of functions and various other definitions
- that are used in C applications, this is very useful if dynamically loading
- the library instead of linking.
- */
- #include "../../JSONOptions.h"
- #include "JSONDefs/Unknown_C.h"
- #include "JSONDefs/GNU_C.h"
- #include "JSONDefs/Visual_C.h"
- #include "JSONDefs/Strings_Defs.h"
- #define __LIBJSON_MAJOR__ 7
- #define __LIBJSON_MINOR__ 6
- #define __LIBJSON_PATCH__ 1
- #define __LIBJSON_VERSION__ (__LIBJSON_MAJOR__ * 10000 + __LIBJSON_MINOR__ * 100 + __LIBJSON_PATCH__)
- #define JSON_NULL '\0'
- #define JSON_STRING '\1'
- #define JSON_NUMBER '\2'
- #define JSON_BOOL '\3'
- #define JSON_ARRAY '\4'
- #define JSON_NODE '\5'
- #ifdef __cplusplus
- #if defined(JSON_MEMORY_CALLBACKS) || defined(JSON_MEMORY_POOL)
- #include "JSONAllocator.h"
- #else
- #define json_allocator std::allocator
- #endif
- #ifdef JSON_STRING_HEADER
- #include JSON_STRING_HEADER
- #else
- typedef std::basic_string<json_char, std::char_traits<json_char>, json_allocator<json_char> > json_string;
- #endif
- #endif
- #define JSON_MAP(x, y) std::map<x, y, std::less<x>, json_allocator<std::pair<const x, y> > >
- #ifdef JSON_NO_EXCEPTIONS
- #define json_throw(x)
- #define json_try
- #define json_catch(exception, code)
- #else
- #define json_throw(x) throw(x)
- #define json_try try
- #define json_catch(exception, code) catch(exception){ code }
- #endif
- #ifdef JSON_STRICT
- #ifndef JSON_UNICODE
- #error, JSON_UNICODE is required for JSON_STRICT
- #endif
- #ifdef JSON_COMMENTS
- #error, JSON_COMMENTS is required to be off for JSON_STRICT
- #endif
- #endif
- #ifdef JSON_ISO_STRICT
- #ifdef JSON_UNICODE
- #error, You can not use unicode under ANSI Strict C++
- #endif
- #else
- #ifdef __GNUC__
- #ifdef __STRICT_ANSI__
- //#warning, Using -ansi GCC option, but JSON_ISO_STRICT not on, turning it on for you
- #define JSON_ISO_STRICT
- #endif
- #endif
- #endif
- #ifdef JSON_NUMBER_TYPE
- typedef JSON_NUMBER_TYPE json_number;
- #define JSON_FLOAT_THRESHHOLD 0.00001
- #else
- #ifdef JSON_LESS_MEMORY
- typedef float json_number;
- #define JSON_FLOAT_THRESHHOLD 0.00001f
- #else
- typedef double json_number;
- #define JSON_FLOAT_THRESHHOLD 0.00001
- #endif
- #endif
- #ifdef JSON_LESS_MEMORY
- /* PACKED and BITS stored in compiler specific headers */
- #define START_MEM_SCOPE {
- #define END_MEM_SCOPE }
- #else
- #define PACKED(x)
- #define BITS(x)
- #define START_MEM_SCOPE
- #define END_MEM_SCOPE
- #endif
- #if defined JSON_DEBUG || defined JSON_SAFE
- #ifdef JSON_LIBRARY
- typedef void (*json_error_callback_t)(const json_char *);
- #else
- typedef void (*json_error_callback_t)(const json_string &);
- #endif
- #endif
- #ifdef JSON_INDEX_TYPE
- typedef JSON_INDEX_TYPE json_index_t;
- #else
- typedef unsigned int json_index_t;
- #endif
- #ifdef JSON_BOOL_TYPE
- typedef JSON_BOOL_TYPE json_bool_t;
- #else
- typedef int json_bool_t;
- #endif
- #ifdef JSON_INT_TYPE
- typedef JSON_INT_TYPE json_int_t;
- #else
- typedef long json_int_t;
- #endif
- #define JSONSTREAM_SELF (void*)-1
- typedef void (*json_stream_e_callback_t)(void * identifier);
- typedef void (*json_mutex_callback_t)(void *);
- typedef void (*json_free_t)(void *);
- #ifndef JSON_LIBRARY
- typedef void * (*json_malloc_t)(size_t);
- typedef void * (*json_realloc_t)(void *, size_t);
- #else
- #define JSONNODE void /* so that JSONNODE* is void* */
- typedef JSONNODE** JSONNODE_ITERATOR;
- #ifdef JSON_STREAM
- #define JSONSTREAM void
- typedef void (*json_stream_callback_t)(JSONNODE *, void * identifier);
- #endif
- typedef void * (*json_malloc_t)(unsigned long);
- typedef void * (*json_realloc_t)(void *, unsigned long);
- #endif
- #ifdef JSON_DEBUG
- #ifdef NDEBUG
- #ifdef __GNUC__
- #warning, Have JSON_DEBUG on in a release build
- #else
- #error, Have JSON_DEBUG on in a release build
- #endif
- #endif
- /*
- #else
- #ifndef NDEBUG
- #ifdef __GNUC__
- #warning, Release build of libjson, but NDEBUG is not on
- #else
- #error, Release build of libjson, but NDEBUG is not on
- #endif
- #endif
- */
- #endif
- #ifdef JSON_UNIT_TEST
- #define JSON_PRIVATE public:
- #define JSON_PROTECTED public:
- #else
- #define JSON_PRIVATE private:
- #define JSON_PROTECTED protected:
- #endif
- #ifdef JSON_STREAM
- #ifndef JSON_READ_PRIORITY
- #error, JSON_STREAM also requires JSON_READ_PRIORITY
- #endif
- #endif
- #ifdef JSON_VALIDATE
- #ifndef JSON_READ_PRIORITY
- #error, JSON_VALIDATE also requires JSON_READ_PRIORITY
- #endif
- #endif
- #define JSON_TEMP_COMMENT_IDENTIFIER JSON_TEXT('#')
- #endif
|