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