]>
Commit | Line | Data |
---|---|---|
0b4b35e1 DB |
1 | /* |
2 | * json_print.h "print regular or json output, based on json_writer". | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation; either version | |
7 | * 2 of the License, or (at your option) any later version. | |
8 | * | |
9 | * Authors: Julien Fortin, <julien@cumulusnetworks.com> | |
10 | */ | |
11 | ||
12 | #ifndef _JSON_PRINT_H_ | |
13 | #define _JSON_PRINT_H_ | |
14 | ||
15 | #include "json_writer.h" | |
16 | #include "color.h" | |
17 | ||
18 | json_writer_t *get_json_writer(void); | |
19 | ||
20 | /* | |
21 | * use: | |
22 | * - PRINT_ANY for context based output | |
23 | * - PRINT_FP for non json specific output | |
24 | * - PRINT_JSON for json specific output | |
25 | */ | |
26 | enum output_type { | |
27 | PRINT_FP = 1, | |
28 | PRINT_JSON = 2, | |
29 | PRINT_ANY = 4, | |
30 | }; | |
31 | ||
429f314e | 32 | void new_json_obj(int json); |
0b4b35e1 DB |
33 | void delete_json_obj(void); |
34 | ||
35 | bool is_json_context(void); | |
36 | ||
0b4b35e1 DB |
37 | void fflush_fp(void); |
38 | ||
39 | void open_json_object(const char *str); | |
40 | void close_json_object(void); | |
41 | void open_json_array(enum output_type type, const char *delim); | |
42 | void close_json_array(enum output_type type, const char *delim); | |
43 | ||
44 | #define _PRINT_FUNC(type_name, type) \ | |
45 | void print_color_##type_name(enum output_type t, \ | |
46 | enum color_attr color, \ | |
47 | const char *key, \ | |
48 | const char *fmt, \ | |
49 | type value); \ | |
50 | \ | |
51 | static inline void print_##type_name(enum output_type t, \ | |
52 | const char *key, \ | |
53 | const char *fmt, \ | |
54 | type value) \ | |
55 | { \ | |
4b73d52f | 56 | print_color_##type_name(t, COLOR_NONE, key, fmt, value); \ |
0b4b35e1 DB |
57 | } |
58 | _PRINT_FUNC(int, int); | |
59 | _PRINT_FUNC(bool, bool); | |
60 | _PRINT_FUNC(null, const char*); | |
61 | _PRINT_FUNC(string, const char*); | |
62 | _PRINT_FUNC(uint, uint64_t); | |
63 | _PRINT_FUNC(hu, unsigned short); | |
64 | _PRINT_FUNC(hex, unsigned int); | |
65 | _PRINT_FUNC(0xhex, unsigned int); | |
66 | _PRINT_FUNC(lluint, unsigned long long int); | |
097415d5 | 67 | _PRINT_FUNC(float, double); |
0b4b35e1 DB |
68 | #undef _PRINT_FUNC |
69 | ||
70 | #endif /* _JSON_PRINT_H_ */ |