]>
Commit | Line | Data |
---|---|---|
fcc16c22 SH |
1 | /* |
2 | * Simple streaming JSON writer | |
3 | * | |
4 | * This takes care of the annoying bits of JSON syntax like the commas | |
5 | * after elements | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or | |
8 | * modify it under the terms of the GNU General Public License | |
9 | * as published by the Free Software Foundation; either version | |
10 | * 2 of the License, or (at your option) any later version. | |
11 | * | |
12 | * Authors: Stephen Hemminger <stephen@networkplumber.org> | |
13 | */ | |
14 | ||
15 | #ifndef _JSON_WRITER_H_ | |
16 | #define _JSON_WRITER_H_ | |
17 | ||
18 | #include <stdbool.h> | |
19 | #include <stdint.h> | |
20 | ||
21 | /* Opaque class structure */ | |
22 | typedef struct json_writer json_writer_t; | |
23 | ||
24 | /* Create a new JSON stream */ | |
25 | json_writer_t *jsonw_new(FILE *f); | |
26 | /* End output to JSON stream */ | |
27 | void jsonw_destroy(json_writer_t **self_p); | |
28 | ||
29 | /* Cause output to have pretty whitespace */ | |
30 | void jsonw_pretty(json_writer_t *self, bool on); | |
31 | ||
32 | /* Add property name */ | |
33 | void jsonw_name(json_writer_t *self, const char *name); | |
34 | ||
35 | /* Add value */ | |
7252f16b | 36 | void jsonw_printf(json_writer_t *self, const char *fmt, ...); |
fcc16c22 SH |
37 | void jsonw_string(json_writer_t *self, const char *value); |
38 | void jsonw_bool(json_writer_t *self, bool value); | |
39 | void jsonw_float(json_writer_t *self, double number); | |
7252f16b | 40 | void jsonw_float_fmt(json_writer_t *self, const char *fmt, double num); |
fcc16c22 | 41 | void jsonw_uint(json_writer_t *self, uint64_t number); |
7252f16b | 42 | void jsonw_hu(json_writer_t *self, unsigned short number); |
fcc16c22 SH |
43 | void jsonw_int(json_writer_t *self, int64_t number); |
44 | void jsonw_null(json_writer_t *self); | |
7252f16b | 45 | void jsonw_lluint(json_writer_t *self, unsigned long long int num); |
fcc16c22 SH |
46 | |
47 | /* Useful Combinations of name and value */ | |
48 | void jsonw_string_field(json_writer_t *self, const char *prop, const char *val); | |
49 | void jsonw_bool_field(json_writer_t *self, const char *prop, bool value); | |
50 | void jsonw_float_field(json_writer_t *self, const char *prop, double num); | |
51 | void jsonw_uint_field(json_writer_t *self, const char *prop, uint64_t num); | |
7252f16b | 52 | void jsonw_hu_field(json_writer_t *self, const char *prop, unsigned short num); |
fcc16c22 SH |
53 | void jsonw_int_field(json_writer_t *self, const char *prop, int64_t num); |
54 | void jsonw_null_field(json_writer_t *self, const char *prop); | |
7252f16b JF |
55 | void jsonw_lluint_field(json_writer_t *self, const char *prop, |
56 | unsigned long long int num); | |
57 | void jsonw_float_field_fmt(json_writer_t *self, const char *prop, | |
58 | const char *fmt, double val); | |
fcc16c22 SH |
59 | |
60 | /* Collections */ | |
61 | void jsonw_start_object(json_writer_t *self); | |
62 | void jsonw_end_object(json_writer_t *self); | |
63 | ||
64 | void jsonw_start_array(json_writer_t *self); | |
65 | void jsonw_end_array(json_writer_t *self); | |
66 | ||
67 | /* Override default exception handling */ | |
68 | typedef void (jsonw_err_handler_fn)(const char *); | |
69 | ||
70 | #endif /* _JSON_WRITER_H_ */ |