From 33f1e0b0926e973fb5ae445e9a995848762143bb Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 7 Apr 2022 22:10:41 +0200 Subject: treewide: move json-c compat shims into internal header file Do not expose the json-c compat functions in ucode's public headers to avoid clashes when building on systems with modern json-c. Also remove some explicit json-c/json-c.h includes in places where it is not needed. Signed-off-by: Jo-Philipp Wich --- json-c-compat.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 json-c-compat.h (limited to 'json-c-compat.h') diff --git a/json-c-compat.h b/json-c-compat.h new file mode 100644 index 0000000..da24a0f --- /dev/null +++ b/json-c-compat.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2022 Jo-Philipp Wich + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef JSON_C_COMPAT_H +#define JSON_C_COMPAT_H + +#include +#include +#include + + +/* json-c compat */ + +#ifndef HAVE_PARSE_END +static inline size_t json_tokener_get_parse_end(struct json_tokener *tok) { + return (size_t)tok->char_offset; +} +#endif + +#ifndef HAVE_ARRAY_EXT +static inline struct json_object *json_object_new_array_ext(int size) { + (void) size; + return json_object_new_array(); +} +#endif + +#ifndef HAVE_JSON_UINT64 +static inline struct json_object *json_object_new_uint64(uint64_t i) { + return json_object_new_int64((int64_t)i); +} + +static inline uint64_t json_object_get_uint64(const struct json_object *obj) { + return (uint64_t)json_object_get_int64(obj); +} +#endif + +#endif /* JSON_C_COMPAT_H */ -- cgit v1.2.3