74static void append_json_escaped_str(
cwist_sstring *buf,
const char *str) {
77 const char *
start = str;
83 case '"':
esc =
"\\\"";
break;
84 case '\\':
esc =
"\\\\";
break;
85 case '\b':
esc =
"\\b";
break;
86 case '\f':
esc =
"\\f";
break;
87 case '\n':
esc =
"\\n";
break;
88 case '\r':
esc =
"\\r";
break;
89 case '\t':
esc =
"\\t";
break;
91 if ((
unsigned char)*
p < 0x20) {
133 append_json_escaped_str(b->
buffer, key);
143 if (!b || !b->
buffer)
return;
144 append_comma_if_needed(b);
154 if (!b || !b->
buffer)
return;
165 if (!b || !b->
buffer)
return;
166 append_comma_if_needed(b);
168 append_json_escaped_str(b->
buffer, key);
181 if (!b || !b->
buffer)
return;
193 if (!b || !b->
buffer)
return;
194 append_comma_if_needed(b);
195 append_key_if_present(b, key);
197 append_json_escaped_str(b->
buffer, value);
211 if (!b || !b->
buffer)
return;
212 append_comma_if_needed(b);
213 append_key_if_present(b, key);
215 snprintf(buf,
sizeof(buf),
"%d", value);
227 if (!b || !b->
buffer)
return;
228 append_comma_if_needed(b);
229 append_key_if_present(b, key);
240 if (!b || !b->
buffer)
return;
241 append_comma_if_needed(b);
242 append_key_if_present(b, key);
Memory allocation wrappers backed by libttak.
void cwist_free(void *ptr)
Free memory obtained via cwist_alloc/cwist_strdup/etc.
void * cwist_alloc(size_t size)
Allocate zeroed memory tracked by libttak.
Safe string type with helper methods.
cwist_sstring * cwist_sstring_create(void)
Create a new sstring instance.
cwist_error_t cwist_sstring_append(cwist_sstring *str, const char *data)
Append a C string.
void cwist_sstring_destroy(cwist_sstring *str)
Destroy an sstring instance.
Simple JSON string builder utility.
const char * cwist_json_get_raw(cwist_json_builder *b)
Expose the builder's raw character buffer.
void cwist_json_add_string(cwist_json_builder *b, const char *key, const char *value)
Append a JSON string value.
void cwist_json_begin_object(cwist_json_builder *b)
Begin a JSON object in the current builder context.
void cwist_json_end_object(cwist_json_builder *b)
Close the current JSON object.
void cwist_json_add_int(cwist_json_builder *b, const char *key, int value)
Append a JSON integer value.
void cwist_json_builder_destroy(cwist_json_builder *b)
Release a builder and its owned string buffer.
void cwist_json_add_bool(cwist_json_builder *b, const char *key, bool value)
Append a JSON boolean literal.
cwist_json_builder * cwist_json_builder_create(void)
Allocate a new JSON builder with an empty output buffer.
void cwist_json_add_null(cwist_json_builder *b, const char *key)
Append a JSON null literal.
void cwist_json_begin_array(cwist_json_builder *b, const char *key)
Begin a JSON array, optionally as the value for an object key.
void cwist_json_end_array(cwist_json_builder *b)
Close the current JSON array.
Simple JSON string builder utility.
char * data
Access directly only when raw handling is necessary.