| 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); |