diff --git a/compile_commands.json b/compile_commands.json index 213cc84..858ba5e 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -170,12 +170,12 @@ "-x", "c", "-o", - "/tmp/main-9b4cff.o", + "/tmp/main-6b800d.o", "src/main.c" ], "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c", - "output": "/tmp/main-9b4cff.o" + "output": "/tmp/main-6b800d.o" }, { "arguments": [ @@ -243,12 +243,12 @@ "-x", "c", "-o", - "/tmp/dstring-a07695.o", + "/tmp/dstring-08596e.o", "src/dstring/dstring.c" ], "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/dstring/dstring.c", - "output": "/tmp/dstring-a07695.o" + "output": "/tmp/dstring-08596e.o" }, { "arguments": [ @@ -316,12 +316,12 @@ "-x", "c", "-o", - "/tmp/json_entities-bcc119.o", + "/tmp/json_entities-a48410.o", "src/json_entities/json_entities.c" ], "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/json_entities/json_entities.c", - "output": "/tmp/json_entities-bcc119.o" + "output": "/tmp/json_entities-a48410.o" }, { "arguments": [ @@ -389,12 +389,12 @@ "-x", "c", "-o", - "/tmp/lexer-2e4754.o", + "/tmp/lexer-174a98.o", "src/lexer/lexer.c" ], "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/lexer/lexer.c", - "output": "/tmp/lexer-2e4754.o" + "output": "/tmp/lexer-174a98.o" }, { "arguments": [ @@ -462,11 +462,11 @@ "-x", "c", "-o", - "/tmp/parser-2d2a43.o", + "/tmp/parser-baae30.o", "src/parser/parser.c" ], "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/parser/parser.c", - "output": "/tmp/parser-2d2a43.o" + "output": "/tmp/parser-baae30.o" } ] diff --git a/include/json_entities/json_entities.h b/include/json_entities/json_entities.h index a6e10cd..2841c7e 100644 --- a/include/json_entities/json_entities.h +++ b/include/json_entities/json_entities.h @@ -65,5 +65,9 @@ struct json_collection { }; void print_json(const jentity_t *entity, u32 indent); +jcoll_t *get_collection_from_entity(const jentity_t *entity); +jentity_t *create_new_single_entity(const jval_t value, jentity_t *parent); +jentity_t *create_new_pair_entity(dstr_t *key, const jval_t value, + jentity_t *parent); #endif // !JSON_ENTITIES_H diff --git a/src/json_entities/json_entities.c b/src/json_entities/json_entities.c index e9f7e66..9b31c4d 100644 --- a/src/json_entities/json_entities.c +++ b/src/json_entities/json_entities.c @@ -109,3 +109,40 @@ void print_json(const jentity_t *entity, u32 indent) { printf("\n"); } } + +jcoll_t *get_collection_from_entity(const jentity_t *entity) { + return entity->type == JENTITY_SINGLE ? entity->value.collection + : entity->pair.value.collection; +} + +jentity_t *create_new_single_entity(const jval_t value, jentity_t *parent) { + jentity_t *entity = (jentity_t *)malloc(sizeof(jentity_t)); + + if (!entity) { + return NULL; + } + + entity->type = JENTITY_SINGLE; + entity->value = value; + entity->parent = parent; + entity->next = NULL; + + return entity; +} + +jentity_t *create_new_pair_entity(dstr_t *key, const jval_t value, + jentity_t *parent) { + jentity_t *entity = (jentity_t *)malloc(sizeof(jentity_t)); + + if (!entity) { + return NULL; + } + + entity->type = JENTITY_PAIR; + entity->pair.key = key; + entity->pair.value = value; + entity->parent = parent; + entity->next = NULL; + + return entity; +}