aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/lib/json.h
diff options
context:
space:
mode:
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