From 4da7be39827ea5888ef9c97b1aadf61b0d76347c Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Fri, 7 Feb 2025 11:27:18 -0500 Subject: initial commit (lol) --- mons_json/include/json.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 mons_json/include/json.h (limited to 'mons_json/include') diff --git a/mons_json/include/json.h b/mons_json/include/json.h new file mode 100644 index 0000000..da4ee01 --- /dev/null +++ b/mons_json/include/json.h @@ -0,0 +1,52 @@ +#ifndef MONS_JSON_H +#define MONS_JSON_H + +#include +#include "hashmap.h" + +struct mons_json_value; +union mons_json_entry; + +typedef struct mons_json_array { + struct mons_json_value *values; + unsigned int len; +} mons_json_array; + +typedef union mons_json_value_data { + char *string; + float number; + mons_hashmap object; + mons_json_array array; + bool boolean; + void *null; +} mons_json_value_data; + +typedef enum mons_json_value_type { + MONS_JSON_STRING, + MONS_JSON_NUMBER, + MONS_JSON_OBJECT, + MONS_JSON_ARRAY, + MONS_JSON_BOOL, + MONS_JSON_NULL, +} mons_json_value_type; + +typedef struct mons_json_value { + mons_json_value_type type; + mons_json_value_data data; +} mons_json_value; + +int mons_json_parse(char *json, mons_json_value *out); + +char *mons_json_to_string(mons_json_value json); + +void mons_json_free(mons_json_value json); + +int mons_json_get_value(mons_json_value json, char *name, mons_json_value *out); +int mons_json_get_int(mons_json_value json, char *name, int *out); +int mons_json_get_float(mons_json_value json, char *name, float *out); +int mons_json_get_bool(mons_json_value json, char *name, bool *out); +int mons_json_get_array(mons_json_value json, char *name, mons_json_array *out); +int mons_json_get_object(mons_json_value json, char *name, mons_hashmap *out); +int mons_json_get_string(mons_json_value json, char *name, char **out); + +#endif -- cgit v1.2.3