35 #define json_char char
41 #define json_int_t int64_t
43 #define json_int_t __int64
60 unsigned long max_memory;
66 void * (* mem_alloc) (size_t,
int zero,
void * user_data);
67 void (* mem_free) (
void *,
void * user_data);
73 #define json_relaxed_commas 1
120 #if defined(__cplusplus) && __cplusplus >= 201103L
121 decltype(values) begin ()
const
124 decltype(values) end ()
const
125 {
return values + length;
136 #if defined(__cplusplus) && __cplusplus >= 201103L
137 decltype(values) begin ()
const
140 decltype(values) end ()
const
141 {
return values + length;
167 inline const struct _json_value &operator [] (
int index)
const
169 if (type != json_array || index < 0
170 || ((
unsigned int) index) >= u.array.length)
172 return json_value_none;
175 return *u.array.values [index];
178 inline const struct _json_value &operator [] (
const char * index)
const
180 if (type != json_object)
181 return json_value_none;
183 for (
unsigned int i = 0; i < u.object.length; ++ i)
184 if (!strcmp (u.object.values [i].name, index))
185 return *u.object.values [i].value;
187 return json_value_none;
190 inline operator const char * ()
const
202 inline operator json_int_t ()
const
210 return (json_int_t) u.dbl;
217 inline operator bool ()
const
219 if (type != json_boolean)
222 return u.boolean != 0;
225 inline operator double ()
const
230 return (
double) u.integer;
244 json_value * json_parse (
const json_char * json,
248 const json_char * json,