#ifndef _GTCACA_JSON_H_
#define _GTCACA_JSON_H_
typedef enum {
GTCACA_JSON_NULL,
GTCACA_JSON_BOOL,
GTCACA_JSON_NUMBER,
GTCACA_JSON_STRING,
GTCACA_JSON_ARRAY,
GTCACA_JSON_OBJECT
} gtcaca_json_type;
typedef struct gtcaca_json_value gtcaca_json_value;
struct gtcaca_json_value {
gtcaca_json_type type;
union {
int boolean;
double number;
char *string;
struct { gtcaca_json_value **items; int count; } array;
struct { char **keys; gtcaca_json_value **vals; int count; } object;
} u;
};
gtcaca_json_value *gtcaca_json_parse(const char *text);
gtcaca_json_value *gtcaca_json_parse_file(const char *path);
void gtcaca_json_free(gtcaca_json_value *v);
char *gtcaca_json_stringify(const gtcaca_json_value *v, int indent);
const char *gtcaca_json_string(const gtcaca_json_value *v);
gtcaca_json_value *gtcaca_json_object_get(const gtcaca_json_value *v, const char *key);
int gtcaca_json_array_size(const gtcaca_json_value *v);
gtcaca_json_value *gtcaca_json_array_get(const gtcaca_json_value *v, int i);
#endif