Home | History | Annotate | Download | only in zzjson

Lines Matching refs:zzjson

1 /* JSON Create ZZJSON structures
2 * ZZJSON - Copyright (C) 2008 by Ivo van Poorten
6 #include "zzjson.h"
18 static ZZJSON *zzjson_create_templ(ZZJSON_CONFIG *config, ZZJSON_TYPE type) {
19 ZZJSON *zzjson = config->calloc(1, sizeof(ZZJSON));
20 if (!zzjson) MEMERROR();
21 else zzjson->type = type;
22 return zzjson;
25 ZZJSON *zzjson_create_true(ZZJSON_CONFIG *config) {
29 ZZJSON *zzjson_create_false(ZZJSON_CONFIG *config) {
33 ZZJSON *zzjson_create_null(ZZJSON_CONFIG *config) {
37 ZZJSON *zzjson_create_number_d(ZZJSON_CONFIG *config, double d) {
38 ZZJSON *zzjson = zzjson_create_templ(config, ZZJSON_NUMBER_DOUBLE);
39 if (zzjson)
40 zzjson->value.number.val.dval = d;
41 return zzjson;
44 ZZJSON *zzjson_create_number_i(ZZJSON_CONFIG *config, long long i) {
45 ZZJSON *zzjson = zzjson_create_templ(config, ZZJSON_NUMBER_NEGINT);
46 if (zzjson) {
47 zzjson->type = i<0LL ? ZZJSON_NUMBER_NEGINT : ZZJSON_NUMBER_POSINT;
48 zzjson->value.number.val.ival = llabs(i);
50 return zzjson;
63 ZZJSON *zzjson_create_string(ZZJSON_CONFIG *config, char *s) {
64 ZZJSON *zzjson = NULL;
67 if (!(scopy = sdup(config,s))) return zzjson;
69 if ((zzjson = zzjson_create_templ(config, ZZJSON_STRING)))
70 zzjson->value.string.string = scopy;
74 return zzjson;
77 ZZJSON *zzjson_create_array(ZZJSON_CONFIG *config, ...) {
78 ZZJSON *zzjson, *retval, *val;
81 if (!(zzjson = zzjson_create_templ(config, ZZJSON_ARRAY))) return zzjson;
82 retval = zzjson;
85 val = va_arg(ap, ZZJSON *);
87 zzjson->value.array.val = val;
88 val = va_arg(ap, ZZJSON *);
91 ZZJSON *next = zzjson_create_templ(config, ZZJSON_ARRAY);
100 zzjson->next = next;
101 zzjson = next;
108 ZZJSON *zzjson_create_object(ZZJSON_CONFIG *config, ...) {
109 ZZJSON *zzjson, *retval, *val;
113 if (!(zzjson = zzjson_create_templ(config, ZZJSON_OBJECT))) return zzjson;
114 retval = zzjson;
119 val = va_arg(ap, ZZJSON *);
128 zzjson->value.object.label = labelcopy;
129 zzjson->value.object.val = val;
134 ZZJSON *next = zzjson_create_templ(config, ZZJSON_OBJECT);
144 zzjson->next = next;
145 zzjson = next;
152 ZZJSON *zzjson_array_prepend(ZZJSON_CONFIG *config, ZZJSON *array,
153 ZZJSON *val) {
154 ZZJSON *zzjson;
161 zzjson = zzjson_create_templ(config, ZZJSON_ARRAY);
162 if (zzjson) {
163 zzjson->value.array.val = val;
164 zzjson->next = array;
166 return zzjson;
169 ZZJSON *zzjson_array_append(ZZJSON_CONFIG *config, ZZJSON *array,
170 ZZJSON *val) {
171 ZZJSON *retval = array, *zzjson;
178 zzjson = zzjson_create_templ(config, ZZJSON_ARRAY);
179 if (!zzjson) return NULL;
183 zzjson->value.array.val = val;
184 array->next = zzjson;
189 ZZJSON *zzjson_object_prepend(ZZJSON_CONFIG *config, ZZJSON *object,
190 char *label, ZZJSON *val) {
191 ZZJSON *zzjson = NULL;
194 if (!labelcopy) return zzjson;
202 zzjson = zzjson_create_templ(config, ZZJSON_OBJECT);
203 if (zzjson) {
204 zzjson->value.object.label = labelcopy;
205 zzjson->value.object.val = val;
206 zzjson->next = object;
210 return zzjson;
213 ZZJSON *zzjson_object_append(ZZJSON_CONFIG *config, ZZJSON *object,
214 char *label, ZZJSON *val) {
215 ZZJSON *retval = object, *zzjson = NULL;
218 if (!labelcopy) return zzjson;
226 zzjson = zzjson_create_templ(config, ZZJSON_OBJECT);
227 if (!zzjson) {
234 zzjson->value.object.label = labelcopy;
235 zzjson->value.object.val = val;
236 object->next = zzjson;