From 08b66bf827f5aaae131a6df75d7f0b277fe868fc Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 15 Aug 2024 21:26:20 -0400 Subject: [PATCH] External: merge json headers Signed-off-by: Alyssa Rosenzweig --- External/tiny-json/json-maker.h | 133 -------------------------------- External/tiny-json/tiny-json.c | 1 - External/tiny-json/tiny-json.h | 130 ++++++++++++++++++++++++++----- Source/Common/Config.cpp | 1 - 4 files changed, 112 insertions(+), 153 deletions(-) delete mode 100644 External/tiny-json/json-maker.h diff --git a/External/tiny-json/json-maker.h b/External/tiny-json/json-maker.h deleted file mode 100644 index 3adea1633..000000000 --- a/External/tiny-json/json-maker.h +++ /dev/null @@ -1,133 +0,0 @@ - -/* - - - Licensed under the MIT License . - SPDX-License-Identifier: MIT - Copyright (c) 2018 Rafa Garcia . - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -*/ - -#ifndef MAKE_JSON_H -#define MAKE_JSON_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup makejoson Make JSON. - * @{ */ - -/** Open a JSON object in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @return Pointer to the new end of JSON under construction. */ -char* json_objOpen( char* dest, char const* name ); - -/** Close a JSON object in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @return Pointer to the new end of JSON under construction. */ -char* json_objClose( char* dest ); - -/** Used to finish the root JSON object. After call json_objClose(). - * @param dest Pointer to the end of JSON under construction. - * @return Pointer to the new end of JSON under construction. */ -char* json_end( char* dest ); - -/** Open an array in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @return Pointer to the new end of JSON under construction. */ -char* json_arrOpen( char* dest, char const* name ); - -/** Close an array in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @return Pointer to the new end of JSON under construction. */ -char* json_arrClose( char* dest ); - -/** Add a text property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value A valid null-terminated string with the value. - * Backslash escapes will be added for special characters. - * @return Pointer to the new end of JSON under construction. */ -char* json_str( char* dest, char const* name, char const* value ); - -/** Add a boolean property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Zero for false. Non zero for true. - * @return Pointer to the new end of JSON under construction. */ -char* json_bool( char* dest, char const* name, int value ); - -/** Add a null property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @return Pointer to the new end of JSON under construction. */ -char* json_null( char* dest, char const* name ); - -/** Add an integer property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_int( char* dest, char const* name, int value ); - -/** Add an unsigned integer property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_uint( char* dest, char const* name, unsigned int value ); - -/** Add a long integer property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_long( char* dest, char const* name, long int value ); - -/** Add an unsigned long integer property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_ulong( char* dest, char const* name, unsigned long int value ); - -/** Add a long long integer property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_verylong( char* dest, char const* name, long long int value ); - -/** Add a double precision number property in a JSON string. - * @param dest Pointer to the end of JSON under construction. - * @param name Pointer to null-terminated string or null for unnamed. - * @param value Value of the property. - * @return Pointer to the new end of JSON under construction. */ -char* json_double( char* dest, char const* name, double value ); - -/** @ } */ - -#ifdef __cplusplus -} -#endif - -#endif /* MAKE_JSON_H */ - diff --git a/External/tiny-json/tiny-json.c b/External/tiny-json/tiny-json.c index 822a0bae9..888992b5b 100644 --- a/External/tiny-json/tiny-json.c +++ b/External/tiny-json/tiny-json.c @@ -30,7 +30,6 @@ #include #include #include // For NULL -#include "json-maker.h" #include "tiny-json.h" /** Structure to handle a heap of JSON properties. */ diff --git a/External/tiny-json/tiny-json.h b/External/tiny-json/tiny-json.h index d592a4aaa..6c24cdaee 100644 --- a/External/tiny-json/tiny-json.h +++ b/External/tiny-json/tiny-json.h @@ -54,12 +54,12 @@ typedef enum { /** Structure to handle JSON properties. */ typedef struct json_s { struct json_s* sibling; - char const* name; + const char* name; union { - char const* value; - struct { - struct json_s* child; - struct json_s* last_child; + const char* value; + struct { + struct json_s* child; + struct json_s* last_child; } c; } u; jsonType_t type; @@ -72,13 +72,13 @@ typedef struct json_s { * @retval Null pointer if any was wrong in the parse process. * @retval If the parser process was successfully a valid handler of a json. * This property is always unnamed and its type is JSON_OBJ. */ -json_t const* json_create( char* str, json_t mem[], unsigned int qty ); +const json_t* json_create(char* str, json_t mem[], unsigned int qty); /** Get the name of a json property. * @param json A valid handler of a json property. * @retval Pointer to null-terminated if property has name. * @retval Null pointer if the property is unnamed. */ -static inline char const* json_getName( json_t const* json ) { +static inline const char* json_getName(const json_t* json) { return json->name; } @@ -86,14 +86,14 @@ static inline char const* json_getName( json_t const* json ) { * The type of property cannot be JSON_OBJ or JSON_ARRAY. * @param json A valid handler of a json property. * @return Pointer to null-terminated string with the value. */ -static inline char const* json_getValue( json_t const* property ) { +static inline const char* json_getValue(const json_t* property) { return property->u.value; } /** Get the type of a json property. * @param json A valid handler of a json property. * @return The code of type.*/ -static inline jsonType_t json_getType( json_t const* json ) { +static inline jsonType_t json_getType(const json_t* json) { return json->type; } @@ -101,7 +101,7 @@ static inline jsonType_t json_getType( json_t const* json ) { * @param json A valid handler of a json property. * @retval The handler of the next sibling if found. * @retval Null pointer if the json property is the last one. */ -static inline json_t const* json_getSibling( json_t const* json ) { +static inline const json_t* json_getSibling(const json_t* json) { return json->sibling; } @@ -110,7 +110,7 @@ static inline json_t const* json_getSibling( json_t const* json ) { * @param property The name of property to get. * @retval The handler of the json property if found. * @retval Null pointer if not found. */ -json_t const* json_getProperty( json_t const* obj, char const* property ); +const json_t* json_getProperty(const json_t* obj, const char* property); /** Search a property by its name in a JSON object and return its value. @@ -118,40 +118,39 @@ json_t const* json_getProperty( json_t const* obj, char const* property ); * @param property The name of property to get. * @retval If found a pointer to null-terminated string with the value. * @retval Null pointer if not found or it is an array or an object. */ -char const* json_getPropertyValue( json_t const* obj, char const* property ); +const char* json_getPropertyValue(const json_t* obj, const char* property); /** Get the first property of a JSON object or array. * @param json A valid handler of a json property. * Its type must be JSON_OBJ or JSON_ARRAY. * @retval The handler of the first property if there is. * @retval Null pointer if the json object has not properties. */ -static inline json_t const* json_getChild( json_t const* json ) { +static inline const json_t* json_getChild(const json_t* json) { return json->u.c.child; } /** Get the value of a json boolean property. * @param property A valid handler of a json object. Its type must be JSON_BOOLEAN. * @return The value stdbool. */ -static inline bool json_getBoolean( json_t const* property ) { +static inline bool json_getBoolean(const json_t* property) { return *property->u.value == 't'; } /** Get the value of a json integer property. * @param property A valid handler of a json object. Its type must be JSON_INTEGER. * @return The value stdint. */ -static inline int64_t json_getInteger( json_t const* property ) { +static inline int64_t json_getInteger(const json_t* property) { return atoll( property->u.value ); } /** Get the value of a json real property. * @param property A valid handler of a json object. Its type must be JSON_REAL. * @return The value. */ -static inline double json_getReal( json_t const* property ) { +static inline double json_getReal(const json_t* property) { return atof( property->u.value ); } - /** Structure to handle a heap of JSON properties. */ typedef struct jsonPool_s jsonPool_t; struct jsonPool_s { @@ -165,7 +164,102 @@ struct jsonPool_s { * @retval Null pointer if any was wrong in the parse process. * @retval If the parser process was successfully a valid handler of a json. * This property is always unnamed and its type is JSON_OBJ. */ -json_t const* json_createWithPool( char* str, jsonPool_t* pool ); +const json_t* json_createWithPool(char* str, jsonPool_t* pool); + +/** @ } */ + +/** @defgroup makejoson Make JSON. + * @{ */ + +/** Open a JSON object in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @return Pointer to the new end of JSON under construction. */ +char* json_objOpen(char* dest, const char* name); + +/** Close a JSON object in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @return Pointer to the new end of JSON under construction. */ +char* json_objClose(char* dest); + +/** Used to finish the root JSON object. After call json_objClose(). + * @param dest Pointer to the end of JSON under construction. + * @return Pointer to the new end of JSON under construction. */ +char* json_end(char* dest); + +/** Open an array in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @return Pointer to the new end of JSON under construction. */ +char* json_arrOpen(char* dest, const char* name); + +/** Close an array in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @return Pointer to the new end of JSON under construction. */ +char* json_arrClose(char* dest); + +/** Add a text property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value A valid null-terminated string with the value. + * Backslash escapes will be added for special characters. + * @return Pointer to the new end of JSON under construction. */ +char* json_str(char* dest, const char* name, const char* value); + +/** Add a boolean property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Zero for false. Non zero for true. + * @return Pointer to the new end of JSON under construction. */ +char* json_bool(char* dest, const char* name, int value); + +/** Add a null property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @return Pointer to the new end of JSON under construction. */ +char* json_null(char* dest, const char* name); + +/** Add an integer property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_int(char* dest, const char* name, int value); + +/** Add an unsigned integer property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_uint(char* dest, const char* name, unsigned int value); + +/** Add a long integer property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_long(char* dest, const char* name, long int value); + +/** Add an unsigned long integer property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_ulong(char* dest, const char* name, unsigned long int value); + +/** Add a long long integer property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_verylong(char* dest, const char* name, long long int value); + +/** Add a double precision number property in a JSON string. + * @param dest Pointer to the end of JSON under construction. + * @param name Pointer to null-terminated string or null for unnamed. + * @param value Value of the property. + * @return Pointer to the new end of JSON under construction. */ +char* json_double(char* dest, const char* name, double value); /** @ } */ diff --git a/Source/Common/Config.cpp b/Source/Common/Config.cpp index cb4c9240c..9dba05a8d 100644 --- a/Source/Common/Config.cpp +++ b/Source/Common/Config.cpp @@ -17,7 +17,6 @@ #include #endif #include -#include #include namespace FEX::Config {