src/cx/json.h

changeset 996
333155f234c4
parent 988
15b3ca7ee33f
equal deleted inserted replaced
995:d3d4f245b843 996:333155f234c4
35 35
36 #ifndef UCX_JSON_H 36 #ifndef UCX_JSON_H
37 #define UCX_JSON_H 37 #define UCX_JSON_H
38 38
39 #include "common.h" 39 #include "common.h"
40 #include "allocator.h"
40 #include "string.h" 41 #include "string.h"
41 #include "array_list.h" 42 #include "array_list.h"
42 43
43 #ifdef __cplusplus 44 #ifdef __cplusplus
44 extern "C" { 45 extern "C" {
111 size_t length; 112 size_t length;
112 size_t alloc; 113 size_t alloc;
113 }; 114 };
114 115
115 struct cx_json_s { 116 struct cx_json_s {
117 const CxAllocator *allocator;
116 const char *buffer; 118 const char *buffer;
117 size_t size; 119 size_t size;
118 size_t pos; 120 size_t pos;
119 121
120 CxJsonToken uncompleted; 122 CxJsonToken uncompleted;
158 char *name; 160 char *name;
159 CxJsonValue *value; 161 CxJsonValue *value;
160 }; 162 };
161 163
162 struct cx_json_value_s { 164 struct cx_json_value_s {
165 const CxAllocator *allocator;
163 CxJsonValueType type; 166 CxJsonValueType type;
164 union { 167 union {
165 CxJsonArray array; 168 CxJsonArray array;
166 CxJsonObject object; 169 CxJsonObject object;
167 CxJsonString string; 170 CxJsonString string;
169 CxJsonNumber number; 172 CxJsonNumber number;
170 CxJsonLiteral literal; 173 CxJsonLiteral literal;
171 } value; 174 } value;
172 }; 175 };
173 176
174 // TODO: add support for CxAllocator 177
175 178 cx_attr_nonnull_arg(2)
176 cx_attr_nonnull 179 void cxJsonInit(const CxAllocator *allocator, CxJson *json);
177 void cxJsonInit(CxJson *json);
178 180
179 cx_attr_nonnull 181 cx_attr_nonnull
180 void cxJsonDestroy(CxJson *json); 182 void cxJsonDestroy(CxJson *json);
181 183
182 cx_attr_nonnull 184 cx_attr_nonnull

mercurial