From: Eric Haszlakiewicz Date: Mon, 6 Apr 2020 13:55:27 +0000 (+0000) Subject: Add includes and split off json_types.h to help ensure that headers can be included... X-Git-Tag: json-c-0.14-20200419~38 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=19bbf2c069c636411d37d775fe19f0c4ba1e97fa;p=json-c Add includes and split off json_types.h to help ensure that headers can be included in any order. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ed71ee..898974d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,6 +298,7 @@ set(JSON_C_PUBLIC_HEADERS ${PROJECT_SOURCE_DIR}/json_object_iterator.h ${PROJECT_SOURCE_DIR}/json_pointer.h ${PROJECT_SOURCE_DIR}/json_tokener.h + ${PROJECT_SOURCE_DIR}/json_types.h ${PROJECT_SOURCE_DIR}/json_util.h ${PROJECT_SOURCE_DIR}/json_visit.h ${PROJECT_SOURCE_DIR}/linkhash.h diff --git a/arraylist.h b/arraylist.h index 9e12ae0..3c4b1b2 100644 --- a/arraylist.h +++ b/arraylist.h @@ -22,6 +22,8 @@ extern "C" { #endif +#include + #define ARRAY_LIST_DEFAULT_SIZE 32 typedef void(array_list_free_fn)(void *data); diff --git a/json_object.h b/json_object.h index 02af930..53f2944 100644 --- a/json_object.h +++ b/json_object.h @@ -33,16 +33,10 @@ #define JSON_C_CONST_FUNCTION(func) func #endif -#ifndef JSON_EXPORT -#if defined(_MSC_VER) -#define JSON_EXPORT __declspec(dllexport) -#else -#define JSON_EXPORT extern -#endif -#endif - #include "json_inttypes.h" +#include "json_types.h" #include "printbuf.h" + #include #ifdef __cplusplus @@ -136,50 +130,6 @@ extern "C" { */ #define JSON_C_OPTION_THREAD (1) -/** - * A structure to use with json_object_object_foreachC() loops. - * Contains key, val and entry members. - */ -struct json_object_iter -{ - char *key; - struct json_object *val; - struct lh_entry *entry; -}; -typedef struct json_object_iter json_object_iter; - -typedef int json_bool; - -/** - * @brief The core type for all type of JSON objects handled by json-c - */ -typedef struct json_object json_object; - -/** - * Type of custom user delete functions. See json_object_set_serializer. - */ -typedef void(json_object_delete_fn)(struct json_object *jso, void *userdata); - -/** - * Type of a custom serialization function. See json_object_set_serializer. - */ -typedef int(json_object_to_json_string_fn)(struct json_object *jso, struct printbuf *pb, int level, - int flags); - -/* supported object types */ - -typedef enum json_type -{ - /* If you change this, be sure to update json_type_to_name() too */ - json_type_null, - json_type_boolean, - json_type_double, - json_type_int, - json_type_object, - json_type_array, - json_type_string -} json_type; - /* reference counting functions */ /** diff --git a/json_object_iterator.h b/json_object_iterator.h index 6713fc9..a9b1433 100644 --- a/json_object_iterator.h +++ b/json_object_iterator.h @@ -23,16 +23,9 @@ #ifndef JSON_OBJECT_ITERATOR_H #define JSON_OBJECT_ITERATOR_H +#include "json_types.h" #include -#ifndef JSON_EXPORT -#if defined(_MSC_VER) -#define JSON_EXPORT __declspec(dllexport) -#else -#define JSON_EXPORT extern -#endif -#endif - #ifdef __cplusplus extern "C" { #endif diff --git a/json_object_private.h b/json_object_private.h index 3db0bba..1c7737a 100644 --- a/json_object_private.h +++ b/json_object_private.h @@ -23,6 +23,10 @@ extern "C" { /**< how many bytes are directly stored in json_object for strings? */ #define LEN_DIRECT_STRING_DATA 32 +struct json_object; +#include "json_inttypes.h" +#include "json_types.h" + typedef void(json_object_private_delete_fn)(struct json_object *o); /* json object int type, support extension*/ diff --git a/json_types.h b/json_types.h new file mode 100644 index 0000000..67f4497 --- /dev/null +++ b/json_types.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2020 Eric Hawicz + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See COPYING for details. + */ + +#ifndef _json_types_h_ +#define _json_types_h_ + +/** + * @file + * @brief Basic types used in a few places in json-c, but you should include "json_object.h" instead. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef JSON_EXPORT +#if defined(_MSC_VER) +#define JSON_EXPORT __declspec(dllexport) +#else +#define JSON_EXPORT extern +#endif +#endif + +struct printbuf; + +/** + * A structure to use with json_object_object_foreachC() loops. + * Contains key, val and entry members. + */ +struct json_object_iter +{ + char *key; + struct json_object *val; + struct lh_entry *entry; +}; +typedef struct json_object_iter json_object_iter; + +typedef int json_bool; + +/** + * @brief The core type for all type of JSON objects handled by json-c + */ +typedef struct json_object json_object; + +/** + * Type of custom user delete functions. See json_object_set_serializer. + */ +typedef void(json_object_delete_fn)(struct json_object *jso, void *userdata); + +/** + * Type of a custom serialization function. See json_object_set_serializer. + */ +typedef int(json_object_to_json_string_fn)(struct json_object *jso, struct printbuf *pb, int level, + int flags); + +/* supported object types */ + +typedef enum json_type +{ + /* If you change this, be sure to update json_type_to_name() too */ + json_type_null, + json_type_boolean, + json_type_double, + json_type_int, + json_type_object, + json_type_array, + json_type_string +} json_type; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/strerror_override_private.h b/strerror_override_private.h index 0f84754..8726e59 100644 --- a/strerror_override_private.h +++ b/strerror_override_private.h @@ -6,6 +6,8 @@ * @brief Do not use, json-c internal, may be changed or removed at any time. */ +#include "json_types.h" + /* Used by tests to get consistent output */ JSON_EXPORT int _json_c_strerror_enable; diff --git a/vasprintf_compat.h b/vasprintf_compat.h index 0720971..7b8e8fb 100644 --- a/vasprintf_compat.h +++ b/vasprintf_compat.h @@ -8,6 +8,8 @@ #include "snprintf_compat.h" +#include + #if !defined(HAVE_VASPRINTF) /* CAW: compliant version of vasprintf */ static int vasprintf(char **buf, const char *fmt, va_list ap)