13 #define json_global_decl(TYPE, NAME, VALUE) \
14 class jsonSingleton ## NAME { \
16 inline static TYPE & getValue() json_nothrow { \
17 static jsonSingleton ## NAME single; \
21 inline jsonSingleton ## NAME() json_nothrow : val(VALUE) {} \
25 #define json_global_decl_strconfig(TYPE, NAME, VALUE) \
26 class jsonSingleton ## NAME { \
28 inline static TYPE & getValue() json_nothrow { \
29 static jsonSingleton ## NAME single; \
33 inline jsonSingleton ## NAME() json_nothrow { \
34 const std::string tmp = std::string(VALUE); \
35 val = json_string(tmp.begin(), tmp.end()); \
40 #define json_global(NAME) jsonSingleton ## NAME::getValue()
43 json_global_decl(json_string, EMPTY_JSON_STRING, );
44 json_global_decl(std::string, EMPTY_STD_STRING, );
46 json_global_decl(json_string, CONST_TRUE, JSON_TEXT(
"true"));
47 json_global_decl(json_string, CONST_FALSE, JSON_TEXT(
"false"));
48 json_global_decl(json_string, CONST_NULL, JSON_TEXT(
"null"));
51 json_global_decl(json_string, NEW_LINE, JSON_TEXT(
"\n"));
53 json_global_decl_strconfig(json_string, NEW_LINE, JSON_NEWLINE);
56 #ifdef JSON_WRITE_BASH_COMMENTS
57 json_global_decl(json_string, SINGLELINE_COMMENT, JSON_TEXT(
"#"));
59 json_global_decl(json_string, SINGLELINE_COMMENT, JSON_TEXT(
"//"));
63 json_global_decl_strconfig(json_string, INDENT, JSON_INDENT);
66 #ifdef JSON_MUTEX_CALLBACKS
68 json_global_decl(JSON_MAP(
void *,
unsigned int), MUTEX_MANAGER, );
69 json_global_decl(JSON_MAP(
int, JSON_MAP(
void *,
unsigned int) ), THREAD_LOCKS, );
73 #ifdef JSON_MEMORY_MANAGE
74 #include "JSONMemory.h"
75 json_global_decl(auto_expand, STRING_HANDLER, );
76 json_global_decl(auto_expand_node, NODE_HANDLER, );
78 json_global_decl(auto_expand_stream, STREAM_HANDLER, );
84 json_global_decl(json_string, ERROR_TOO_LONG, JSON_TEXT(
"Exceeding JSON_SECURITY_MAX_STRING_LENGTH"));
85 json_global_decl(json_string, ERROR_UNKNOWN_LITERAL, JSON_TEXT(
"Unknown JSON literal: "));
86 json_global_decl(json_string, ERROR_NON_CONTAINER, JSON_TEXT(
"Calling container method on non-container: "));
87 json_global_decl(json_string, ERROR_NON_ITERATABLE, JSON_TEXT(
"Calling iterator method on non-iteratable: "));
88 json_global_decl(json_string, ERROR_NULL_IN_CHILDREN, JSON_TEXT(
"a null pointer within the children"));
89 json_global_decl(json_string, ERROR_UNDEFINED, JSON_TEXT(
"Undefined results: "));
90 json_global_decl(json_string, ERROR_LOWER_RANGE, JSON_TEXT(
" is outside the lower range of "));
91 json_global_decl(json_string, ERROR_UPPER_RANGE, JSON_TEXT(
" is outside the upper range of "));
92 json_global_decl(json_string, ERROR_NOT_BASE64, JSON_TEXT(
"Not base64"));
93 json_global_decl(json_string, ERROR_OUT_OF_MEMORY, JSON_TEXT(
"Out of memory"));