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