From 8a9e6b1bd3be1041792311a86d8aac68b659e891 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Fri, 31 Jan 2025 08:02:09 +0100 Subject: feat: First version, failing json parse string --- main.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..0910b3d --- /dev/null +++ b/main.c @@ -0,0 +1,47 @@ +/* +Inspirations: +- https://nullprogram.com/ +*/ +#include +#include +#include +#include + +#include "json.h" +#include "memory.h" +#include "string.h" +#include "vec.h" + +#define sizeof(x) (ptrdiff_t)sizeof(x) +#define countof(a) (sizeof(a) / sizeof(*(a))) +#define lengthof(s) (countof(s) - 1) + +typedef struct { + int age; +} User; + +int main() { + Arena perm = Arena_new(128e3); + assert(Str_equals(S("Bonjour"), S("Bonjour"))); + // Testing JSON + printf("Arena: mem=%d B\n", Arena_get_used(perm)); + JSON json_int = JSON_parse(&perm, S("123")); + assert(*json_int.integer == 123); + printf("Arena: mem=%d B\n", Arena_get_used(perm)); + JSON json_int_array = JSON_parse(&perm, S("[1,2,3]")); + assert(json_int_array.integer == NULL); + assert(json_int_array.array->len == 3); + int sum = 0; + for (int i = 0; i < json_int_array.array->len; i++) { + sum += *Vec_get(json_int_array.array, int, i); + } + assert(sum == 6); + printf("Arena: mem=%d B\n", Arena_get_used(perm)); + assert(*Vec_get(JSON_parse(&perm, S("[1, 2, 3]")).array, int, 1) == 2); + printf("Arena: mem=%d B\n", Arena_get_used(perm)); + Str a = S("\"abc\""); + JSON s = JSON_parse(&perm, S("\"abc\"")); + // printf("%s (%d)\n", s.string->data, s.string->len); + // assert(Str_equals(*JSON_parse(&perm, S("\"abc\"")).string, S("abc")) == 1); + return 0; +} -- cgit v1.3