From: Petri Lehtinen Date: Sun, 28 Mar 2010 18:14:08 +0000 (+0300) Subject: Support compilers that don't have the "inline" keyword X-Git-Tag: v1.2.1~3 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=jansson.git;a=commitdiff_plain;h=29ee3832cf1cee4cfebad8e440b58877437c4615 Support compilers that don't have the "inline" keyword Use AC_C_INLINE autoconf macro, include config.h where needed, and add a define of JSON_INLINE to jansson.h that has the correct "inline" keyword. --- diff --git a/.gitignore b/.gitignore index 4c4115c..fe9488d 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ missing stamp-h1 *.pyc *.pc +/src/jansson.h diff --git a/configure.ac b/configure.ac index 6bc9064..746bff2 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,14 @@ AC_PROG_LIBTOOL # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_INT32_T +AC_C_INLINE +case $ac_cv_c_inline in + yes) json_inline=inline;; + no) json_inline=;; + *) json_inline=$ac_cv_c_inline;; +esac +AC_SUBST([json_inline]) + # Checks for library functions. AC_CONFIG_FILES([ @@ -24,6 +32,7 @@ AC_CONFIG_FILES([ Makefile doc/Makefile src/Makefile + src/jansson.h test/Makefile test/bin/Makefile test/suites/Makefile diff --git a/src/hashtable.c b/src/hashtable.c index 1f8abf4..666ba2a 100644 --- a/src/hashtable.c +++ b/src/hashtable.c @@ -5,6 +5,8 @@ * it under the terms of the MIT license. See LICENSE for details. */ +#include + #include #include "hashtable.h" diff --git a/src/jansson.h b/src/jansson.h.in similarity index 94% rename from src/jansson.h rename to src/jansson.h.in index 78094a7..539400a 100644 --- a/src/jansson.h +++ b/src/jansson.h.in @@ -10,7 +10,10 @@ #include -#ifdef __cplusplus +#ifndef __cplusplus +#define JSON_INLINE @json_inline@ +#else +#define JSON_INLINE inline extern "C" { #endif @@ -56,7 +59,8 @@ json_t *json_true(void); json_t *json_false(void); json_t *json_null(void); -static inline json_t *json_incref(json_t *json) +static JSON_INLINE +json_t *json_incref(json_t *json) { if(json && json->refcount != (unsigned int)-1) ++json->refcount; @@ -66,7 +70,8 @@ static inline json_t *json_incref(json_t *json) /* do not call json_delete directly */ void json_delete(json_t *json); -static inline void json_decref(json_t *json) +static JSON_INLINE +void json_decref(json_t *json) { if(json && json->refcount != (unsigned int)-1 && --json->refcount == 0) json_delete(json); @@ -87,13 +92,13 @@ void *json_object_iter_next(json_t *object, void *iter); const char *json_object_iter_key(void *iter); json_t *json_object_iter_value(void *iter); -static inline +static JSON_INLINE int json_object_set(json_t *object, const char *key, json_t *value) { return json_object_set_new(object, key, json_incref(value)); } -static inline +static JSON_INLINE int json_object_set_nocheck(json_t *object, const char *key, json_t *value) { return json_object_set_new_nocheck(object, key, json_incref(value)); @@ -108,19 +113,19 @@ int json_array_remove(json_t *array, unsigned int index); int json_array_clear(json_t *array); int json_array_extend(json_t *array, json_t *other); -static inline +static JSON_INLINE int json_array_set(json_t *array, unsigned int index, json_t *value) { return json_array_set_new(array, index, json_incref(value)); } -static inline +static JSON_INLINE int json_array_append(json_t *array, json_t *value) { return json_array_append_new(array, json_incref(value)); } -static inline +static JSON_INLINE int json_array_insert(json_t *array, unsigned int index, json_t *value) { return json_array_insert_new(array, index, json_incref(value)); diff --git a/src/value.c b/src/value.c index 3fa7ee3..3788cb1 100644 --- a/src/value.c +++ b/src/value.c @@ -6,6 +6,9 @@ */ #define _GNU_SOURCE + +#include + #include #include