@@ -47,6 +47,8 @@ enum json_tokens {
47
47
JSON_TOK_UINT64 = '6' ,
48
48
JSON_TOK_FLOAT_FP = '7' ,
49
49
JSON_TOK_DOUBLE_FP = '8' ,
50
+ JSON_TOK_INT = 'i' ,
51
+ JSON_TOK_UINT = 'u' ,
50
52
JSON_TOK_TRUE = 't' ,
51
53
JSON_TOK_FALSE = 'f' ,
52
54
JSON_TOK_NULL = 'n' ,
@@ -251,6 +253,19 @@ typedef int (*json_append_bytes_t)(const char *bytes, size_t len,
251
253
.sub_descr_len = elem_descr_len_, \
252
254
}, \
253
255
256
+ /**
257
+ * @internal @brief Helper macro to declare a field descriptor
258
+ *
259
+ * @param struct_ Struct packing the values
260
+ * @param field_name_ Field name in the struct
261
+ */
262
+ #define Z_JSON_DESCR_FIELD (struct_ , field_name_ ) \
263
+ { \
264
+ .field = { \
265
+ .size = SIZEOF_FIELD(struct_, field_name_), \
266
+ }, \
267
+ }
268
+
254
269
/**
255
270
* @brief Helper macro to declare a descriptor for an array of primitives
256
271
*
@@ -283,7 +298,8 @@ typedef int (*json_append_bytes_t)(const char *bytes, size_t len,
283
298
.offset = offsetof(struct_, field_name_), \
284
299
.array = { \
285
300
.element_descr = Z_JSON_ELEMENT_DESCR(struct_, len_field_, \
286
- elem_type_,), \
301
+ elem_type_, \
302
+ Z_JSON_DESCR_FIELD(struct_, field_name_[0])), \
287
303
.n_elements = (max_len_), \
288
304
}, \
289
305
}
@@ -514,8 +530,9 @@ typedef int (*json_append_bytes_t)(const char *bytes, size_t len,
514
530
.type = JSON_TOK_ARRAY_START, \
515
531
.offset = offsetof(struct_, struct_field_name_), \
516
532
.array = { \
517
- .element_descr = \
518
- Z_JSON_ELEMENT_DESCR(struct_, len_field_, elem_type_,), \
533
+ .element_descr = Z_JSON_ELEMENT_DESCR(struct_, len_field_, \
534
+ elem_type_, \
535
+ Z_JSON_DESCR_FIELD(struct_, struct_field_name_[0])), \
519
536
.n_elements = (max_len_), \
520
537
}, \
521
538
}
0 commit comments