Move json_value and obj_t to same file - Rename json_obj.* -> json_value.* - Move `print_json_value(...)` to json_value.* Move `err_ctx(...)` to util.* parse.h now only exposes `parse_json_value(...)`
42 lines
736 B
C
42 lines
736 B
C
|
|
#ifndef _JSON_VALUE_H
|
|
#define _JSON_VALUE_H
|
|
|
|
#include <stdbool.h> // bool
|
|
|
|
#define OBJ_SIZE 64
|
|
|
|
typedef struct obj_entry {
|
|
char const* key;
|
|
struct json_value* val;
|
|
struct obj_entry* next;
|
|
} * __p_obj_entry;
|
|
|
|
typedef __p_obj_entry obj_t[OBJ_SIZE];
|
|
|
|
enum json_type { object,
|
|
array,
|
|
string,
|
|
number,
|
|
boolean,
|
|
null };
|
|
|
|
struct json_value {
|
|
enum json_type type;
|
|
union {
|
|
obj_t* object;
|
|
struct json_value** array;
|
|
char* string;
|
|
bool boolean;
|
|
double number;
|
|
};
|
|
};
|
|
|
|
void* obj_at(obj_t m, char* const key);
|
|
bool obj_insert(obj_t m, char* const key, struct json_value* value);
|
|
void obj_delete(obj_t m);
|
|
|
|
void print_json(struct json_value val, int indent);
|
|
|
|
#endif
|