summaryrefslogtreecommitdiff
path: root/src/modules/json/JSONDefs.h
blob: 5f66efcd339893bee47085023750c0b6a31c904f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#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"

#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
	#include <string>
#endif

#ifdef JSON_UNICODE
	#ifdef JSON_ISO_STRICT
		#error, You can not use unicode under ISO Strict C++
	#endif
	#define json_char wchar_t
	#define json_uchar wchar_t
	#ifdef __cplusplus
		#include <cwchar>  //need wide characters
		typedef std::wstring json_string;
	#else
		#include <wchar.h>  //need wide characters
	#endif
	#define JSON_TEXT(s) L ## s
	#define json_strlen wcslen
	#define json_strcmp wcscmp
#else
	#define json_char char
	#define json_uchar BYTE
	#ifdef __cplusplus
		typedef std::string json_string;
	#endif
	#define JSON_TEXT(s) s
	#define json_strlen strlen
	#define json_strcmp strcmp
#endif

#ifdef JSON_LESS_MEMORY
	#define BITS(x) :x  //tells the compiler how many bits to use for a field
	typedef float json_number;
#else
	#define BITS(x)
	typedef double json_number;
#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

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;
	typedef void * (*json_malloc_t)(unsigned long);
	typedef void * (*json_realloc_t)(void *, unsigned long);
#endif

#endif //JSONDEFS_H