aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/json.h
blob: 40d5cdec8d8ec05684670e1e3d1b3d2f1f42287f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef DUCC_JSON_H
#define DUCC_JSON_H

#include "std.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