178 |
178 |
179 __attribute__((__nonnull__)) |
179 __attribute__((__nonnull__)) |
180 void cxJsonDestroy(CxJson *json); |
180 void cxJsonDestroy(CxJson *json); |
181 |
181 |
182 __attribute__((__nonnull__)) |
182 __attribute__((__nonnull__)) |
183 void cxJsonFill(CxJson *json, const char *buf, size_t len); |
183 int cxJsonFilln(CxJson *json, const char *buf, size_t len); |
|
184 |
|
185 #define cxJsonFill(prop, str) _Generic((str), \ |
|
186 cxstring: cx_json_fill_cxstr, \ |
|
187 cxmutstr: cx_json_fill_mutstr, \ |
|
188 char*: cx_json_fill_str, \ |
|
189 const char*: cx_json_fill_str) \ |
|
190 (prop, str) |
|
191 |
|
192 __attribute__((__nonnull__)) |
|
193 static inline int cx_json_fill_cxstr( |
|
194 CxJson *json, |
|
195 cxstring str |
|
196 ) { |
|
197 return cxJsonFilln(json, str.ptr, str.length); |
|
198 } |
|
199 |
|
200 __attribute__((__nonnull__)) |
|
201 static inline int cx_json_fill_mutstr( |
|
202 CxJson *json, |
|
203 cxmutstr str |
|
204 ) { |
|
205 return cxJsonFilln(json, str.ptr, str.length); |
|
206 } |
|
207 |
|
208 __attribute__((__nonnull__)) |
|
209 static inline int cx_json_fill_str( |
|
210 CxJson *json, |
|
211 const char *str |
|
212 ) { |
|
213 return cxJsonFilln(json, str, strlen(str)); |
|
214 } |
|
215 |
184 |
216 |
185 __attribute__((__nonnull__)) |
217 __attribute__((__nonnull__)) |
186 int cxJsonNext(CxJson *json, CxJsonValue **value); |
218 int cxJsonNext(CxJson *json, CxJsonValue **value); |
187 |
219 |
188 void cxJsonValueFree(CxJsonValue *value); |
220 void cxJsonValueFree(CxJsonValue *value); |