]>
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 | ||
b85076cd SH |
44 | void print_nl(void); |
45 | ||
0b4b35e1 DB |
46 | #define _PRINT_FUNC(type_name, type) \ |
47 | void print_color_##type_name(enum output_type t, \ | |
48 | enum color_attr color, \ | |
49 | const char *key, \ | |
50 | const char *fmt, \ | |
51 | type value); \ | |
52 | \ | |
53 | static inline void print_##type_name(enum output_type t, \ | |
54 | const char *key, \ | |
55 | const char *fmt, \ | |
56 | type value) \ | |
57 | { \ | |
4b73d52f | 58 | print_color_##type_name(t, COLOR_NONE, key, fmt, value); \ |
0b4b35e1 DB |
59 | } |
60 | _PRINT_FUNC(int, int); | |
4db2ff0d | 61 | _PRINT_FUNC(s64, int64_t); |
0b4b35e1 DB |
62 | _PRINT_FUNC(bool, bool); |
63 | _PRINT_FUNC(null, const char*); | |
64 | _PRINT_FUNC(string, const char*); | |
4db2ff0d THJ |
65 | _PRINT_FUNC(uint, unsigned int); |
66 | _PRINT_FUNC(u64, uint64_t); | |
b640e85d | 67 | _PRINT_FUNC(hhu, unsigned char); |
0b4b35e1 DB |
68 | _PRINT_FUNC(hu, unsigned short); |
69 | _PRINT_FUNC(hex, unsigned int); | |
3a1f602a SH |
70 | _PRINT_FUNC(0xhex, unsigned long long); |
71 | _PRINT_FUNC(luint, unsigned long); | |
72 | _PRINT_FUNC(lluint, unsigned long long); | |
097415d5 | 73 | _PRINT_FUNC(float, double); |
0b4b35e1 DB |
74 | #undef _PRINT_FUNC |
75 | ||
76 | #endif /* _JSON_PRINT_H_ */ |