2
3
4
10namespace jsoneat::to_json::cbuf {
13
14
15
16
17
18
19inline int to_json_val(
char *dst, size_t dst_size,
bool val) {
20 return snprintf(dst, dst_size,
21 R"(%s,)", val ?
"true" :
"false");
25
26
27
28
29
30
31inline int to_json_val(
char *dst, size_t dst_size,
int val) {
32 return snprintf(dst, dst_size,
36
37
38
39
40
41
42inline int to_json_val(
char *dst, size_t dst_size,
long val) {
43 return snprintf(dst, dst_size,
47
48
49
50
51
52
53inline int to_json_val(
char *dst, size_t dst_size,
long long val) {
54 return snprintf(dst, dst_size,
58
59
60
61
62
63
64inline int to_json_val(
char *dst, size_t dst_size,
unsigned val) {
65 return snprintf(dst, dst_size,
70
71
72
73
74
75
76inline int to_json_val(
char *dst, size_t dst_size,
float val) {
77 return snprintf(dst, dst_size,
81
82
83
84
85
86
88int to_json_val(
char *dst, size_t dst_size,
const char (&val)[SIZE]) {
89 return snprintf(dst, dst_size,
94
95
96
97
98
99
100template<
class C,
typename std::enable_if<std::is_class_v<C>>::type* =
nullptr>
101int to_json_val(
char *dst, size_t dst_size,
const C &val,
bool append_comma =
true) {
109 res += val._to_json(dst + res, dst_size - res);
111 res += val._to_json(dst, 0);
134
135
136
137
138
139
140template<
typename T, size_t SIZE>
141int to_json_val(
char *dst, size_t dst_size,
const std::array<T, SIZE> &val,
bool append_comma =
true) {
148 for (
int i = 0; i < SIZE; ++i) {
150 res += to_json_val(dst + res, dst_size - res, val[i]);
152 res += to_json_val(dst, 0, val[i]);
175
176
177
178
179
180
181template<
typename T, size_t SIZE>
182int to_json_val(
char *dst, size_t dst_size,
const T (&val)[SIZE],
bool append_comma =
true) {
189 for (
int i = 0; i < SIZE; ++i) {
191 res += to_json_val(dst + res, dst_size - res, val[i]);
193 res += to_json_val(dst, 0, val[i]);
216
217
218
219
220
221
224 auto res = snprintf(dst, dst_size, R"("%s":)", kvp.key);
226 return res + to_json_val(dst + res, dst_size - res, kvp.val);
228 return res + to_json_val(dst, 0, kvp.val);
232
233
234
235
236
237
239int to_json_kvp(
char *dst, size_t dst_size,
const jsoneat::
KvPair<
char[SIZE]> kvp) {
240 return snprintf(dst, dst_size,
241 R"("%s":"%s",)", kvp.key, kvp.val);
246
247
248
249inline int to_json_args(
char*, size_t) {
255
256
257
258
259
260
261
262
263
264template<
typename T,
typename ... Args>
265int to_json_args(
char *dst, size_t dst_size,
const T &pair, Args ... args) {
266 auto res = to_json_kvp(dst, dst_size, pair);
269 return res + to_json_args(dst + res, dst_size - res, args...);
271 return res + to_json_args(dst, 0, args...);
int to_json_val(char *dst, size_t dst_size, unsigned val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:64
int to_json_val(char *dst, size_t dst_size, const T(&val)[SIZE], bool append_comma=true)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:182
int to_json_val(char *dst, size_t dst_size, const std::array< T, SIZE > &val, bool append_comma=true)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:141
int to_json_kvp(char *dst, size_t dst_size, const jsoneat::KvPair< char[SIZE]> kvp)
Print key and value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:239
int to_json_val(char *dst, size_t dst_size, const char(&val)[SIZE])
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:88
int to_json_val(char *dst, size_t dst_size, long val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:42
int to_json_val(char *dst, size_t dst_size, bool val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:19
int to_json_kvp(char *dst, size_t dst_size, const jsoneat::KvPair< T > kvp)
Print key and value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:223
int to_json_val(char *dst, size_t dst_size, float val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:76
int to_json_val(char *dst, size_t dst_size, long long val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:53
int to_json_val(char *dst, size_t dst_size, const C &val, bool append_comma=true)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:101
int to_json_val(char *dst, size_t dst_size, int val)
Print value of a JSON key/value pair and append trailing comma.
Definition to_json_cbuf.hh:31
int to_json_args(char *dst, size_t dst_size, const T &pair, Args ... args)
Definition to_json_cbuf.hh:265
pair of a reference and a json-key
Definition jsoneat.hh:700