From 2278df1493e064c197913e49b5d1935942d83448 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 6 May 2025 16:57:32 -0700 Subject: initial import --- include/json.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 include/json.h (limited to 'include/json.h') diff --git a/include/json.h b/include/json.h new file mode 100644 index 0000000..db508df --- /dev/null +++ b/include/json.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include +#include + +#define JSON_MAX_DEPTH 8 + +typedef enum { + JSON_CONTEXT_OBJECT, + JSON_CONTEXT_ARRAY +} json_context_t; + +typedef struct { + char *data; + size_t length; + size_t capacity; + json_context_t context_stack[JSON_MAX_DEPTH]; + int context_depth; + bool needs_comma[JSON_MAX_DEPTH]; +} json_t; + +void json_init(json_t *buf); +void json_free(json_t *buf); +const char *json_get(json_t *buf); + +void json_start_object(json_t *buf); +void json_end_object(json_t *buf); +void json_set_needs_comma(json_t *buf); +bool json_needs_comma(json_t *buf); + +void json_append(json_t *buf, const char *fmt, ...); +void json_escape_string(json_t *buf, const char *input); + +void json_add_string(json_t *buf, const char *key, const char *value); +void json_add_string_or_null(json_t *buf, const char *key, const char *value); +void json_add_int(json_t *buf, const char *key, int value); +void json_add_int64(json_t *buf, const char *key, int64_t value); +void json_add_uint64(json_t *buf, const char *key, uint64_t value); +void json_add_double(json_t *buf, const char *key, double value); +void json_add_bool(json_t *buf, const char *key, bool value); +void json_add_null(json_t *buf, const char *key); + +void json_start_array(json_t *buf); +void json_end_array(json_t *buf); +void json_add_array_start(json_t *buf, const char *key); + +void json_array_add_string(json_t *buf, const char *value); +void json_array_add_int(json_t *buf, int value); +void json_array_add_int64(json_t *buf, int64_t value); +void json_array_add_uint64(json_t *buf, uint64_t value); +void json_array_add_double(json_t *buf, double value); +void json_array_add_bool(json_t *buf, bool value); +void json_array_add_null(json_t *buf); -- cgit v1.2.3