aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/lib/json.h
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-03 17:29:12 +0900
committernsfisis <nsfisis@gmail.com>2026-05-03 18:42:58 +0900
commit3654ce578e6fff53950874adf7e0e4ae0a6eb956 (patch)
tree5b6c04273de38dba70b7c25e55da144f5f7c37da /src/lib/json.h
parent1b406b13b03055d2b2d08e8279a4a80c41ca7c20 (diff)
downloadducc-main.tar.gz
ducc-main.tar.zst
ducc-main.zip
refactor: organize directory structureHEADmain
Diffstat (limited to 'src/lib/json.h')
-rw-r--r--src/lib/json.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/json.h b/src/lib/json.h
new file mode 100644
index 0000000..9322901
--- /dev/null
+++ b/src/lib/json.h
@@ -0,0 +1,32 @@
+#ifndef DUCC_JSON_H
+#define DUCC_JSON_H
+
+struct JsonBuilder;
+typedef struct JsonBuilder JsonBuilder;
+
+JsonBuilder* jsonbuilder_new();
+const char* jsonbuilder_get_output(JsonBuilder* b);
+
+void jsonbuilder_object_start(JsonBuilder* b);
+void jsonbuilder_object_end(JsonBuilder* b);
+void jsonbuilder_object_member_start(JsonBuilder* b, const char* key);
+void jsonbuilder_object_member_end(JsonBuilder* b);
+
+void jsonbuilder_array_start(JsonBuilder* b);
+void jsonbuilder_array_end(JsonBuilder* b);
+void jsonbuilder_array_element_start(JsonBuilder* b);
+void jsonbuilder_array_element_end(JsonBuilder* b);
+
+void jsonbuilder_null(JsonBuilder* b);
+void jsonbuilder_boolean(JsonBuilder* b, bool value);
+void jsonbuilder_integer(JsonBuilder* b, int value);
+void jsonbuilder_string(JsonBuilder* b, const char* value);
+
+#define JSON_DUMP(x, f) \
+ do { \
+ JsonBuilder* _builder = jsonbuilder_new(); \
+ f(_builder, (x)); \
+ fprintf(stderr, "%s\n", jsonbuilder_get_output(_builder)); \
+ } while (0)
+
+#endif