| // SPDX-License-Identifier: LGPL-2.1-or-later |
| /* |
| * Copyright (C) 2021-2024 Cyril Hrubis <metan@ucw.cz> |
| */ |
| |
| /** |
| * @file ujson_common.h |
| * @brief Common JSON reader/writer definitions. |
| */ |
| |
| #ifndef UJSON_COMMON_H |
| #define UJSON_COMMON_H |
| |
| /** @brief Maximal error message length. */ |
| #define UJSON_ERR_MAX 128 |
| /** @brief Maximal id string lenght including terminating null element. */ |
| #define UJSON_ID_MAX 64 |
| /** @brief Maximal recursion depth allowed. */ |
| #define UJSON_RECURSION_MAX 128 |
| |
| #define UJSON_ERR_PRINT ujson_err_handler |
| #define UJSON_ERR_PRINT_PRIV stderr |
| |
| /** |
| * @brief A JSON data type. |
| */ |
| enum ujson_type { |
| /** @brief No type. Returned when parser finishes. */ |
| UJSON_VOID = 0, |
| /** @brief An integer. */ |
| UJSON_INT, |
| /** @brief A floating point. */ |
| UJSON_FLOAT, |
| /** @brief A boolean. */ |
| UJSON_BOOL, |
| /** @brief NULL */ |
| UJSON_NULL, |
| /** @brief A string. */ |
| UJSON_STR, |
| /** @brief A JSON object. */ |
| UJSON_OBJ, |
| /** @brief A JSON array. */ |
| UJSON_ARR, |
| }; |
| |
| /** |
| * @brief Returns type name. |
| * |
| * @param type A json type. |
| * @return A type name. |
| */ |
| const char *ujson_type_name(enum ujson_type type); |
| |
| /** |
| * @brief Default error print handler. |
| * |
| * @param print_priv A json buffer print_priv pointer. |
| * @param line A line of text to be printed. |
| */ |
| void ujson_err_handler(void *print_priv, const char *line); |
| |
| typedef struct ujson_reader ujson_reader; |
| typedef struct ujson_writer ujson_writer; |
| typedef struct ujson_val ujson_val; |
| |
| /** @brief An array size macro. */ |
| #define UJSON_ARRAY_SIZE(array) (sizeof(array) / sizeof(*array)) |
| |
| #endif /* UJSON_COMMON_H */ |