JSON/Inc/mtojson.h

55 lines
1015 B
C

/*
SPDX-License-Identifier: BSD-2-Clause
This file is Copyright (c) 2020, 2021 by Rene Kita
*/
#ifndef RKTA_MTOJSON_H
#define RKTA_MTOJSON_H
#include <stddef.h>
#include <inttypes.h>
enum json_to_type {
t_to_primitive,
t_to_array,
t_to_boolean,
t_to_hex,
t_to_hex_u8,
t_to_hex_u16,
t_to_hex_u32,
t_to_hex_u64,
t_to_int,
t_to_int8_t,
t_to_int16_t,
t_to_int32_t,
t_to_int64_t,
t_to_long,
t_to_longlong,
t_to_null,
t_to_object,
t_to_string,
t_to_uint,
t_to_uint8_t,
t_to_uint16_t,
t_to_uint32_t,
t_to_uint64_t,
t_to_ulong,
t_to_ulonglong,
t_to_value,
t_to_float,
};
struct to_json {
const char *name;
const void *value;
const uint8_t *lenStr;
const size_t *count; // Number of elements in a C array
size_t len;
enum json_to_type stype; // Type of the struct
enum json_to_type vtype; // Type of '.value'
};
/* Returns the length of the generated JSON text or 0 in case of an error. */
size_t json_generate(char *out, const struct to_json *tjs, size_t len);
#endif