Browse Source

Add includes and split off json_types.h to help ensure that headers can be included in any order.

tags/json-c-0.14-20200419
Eric Haszlakiewicz 5 years ago
parent
commit
19bbf2c069
8 changed files with 92 additions and 60 deletions
  1. +1
    -0
      CMakeLists.txt
  2. +2
    -0
      arraylist.h
  3. +2
    -52
      json_object.h
  4. +1
    -8
      json_object_iterator.h
  5. +4
    -0
      json_object_private.h
  6. +78
    -0
      json_types.h
  7. +2
    -0
      strerror_override_private.h
  8. +2
    -0
      vasprintf_compat.h

+ 1
- 0
CMakeLists.txt View File

@@ -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


+ 2
- 0
arraylist.h View File

@@ -22,6 +22,8 @@
extern "C" {
#endif

#include <stddef.h>

#define ARRAY_LIST_DEFAULT_SIZE 32

typedef void(array_list_free_fn)(void *data);


+ 2
- 52
json_object.h View File

@@ -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 <stddef.h>

#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 */

/**


+ 1
- 8
json_object_iterator.h View File

@@ -23,16 +23,9 @@
#ifndef JSON_OBJECT_ITERATOR_H
#define JSON_OBJECT_ITERATOR_H

#include "json_types.h"
#include <stddef.h>

#ifndef JSON_EXPORT
#if defined(_MSC_VER)
#define JSON_EXPORT __declspec(dllexport)
#else
#define JSON_EXPORT extern
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif


+ 4
- 0
json_object_private.h View File

@@ -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*/


+ 78
- 0
json_types.h View File

@@ -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

+ 2
- 0
strerror_override_private.h View File

@@ -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;



+ 2
- 0
vasprintf_compat.h View File

@@ -8,6 +8,8 @@

#include "snprintf_compat.h"

#include <malloc.h>

#if !defined(HAVE_VASPRINTF)
/* CAW: compliant version of vasprintf */
static int vasprintf(char **buf, const char *fmt, va_list ap)


Loading…
Cancel
Save