diff --git a/doc/apiref.rst b/doc/apiref.rst index 3e5f9f2..1d67881 100644 --- a/doc/apiref.rst +++ b/doc/apiref.rst @@ -296,9 +296,21 @@ Number Usually, you can safely use plain ``int`` in place of ``json_int_t``, and the implicit C integer conversion handles the - rest. Only when you know that you need a full 64-bit range, you + rest. Only when you know that you need the full 64-bit range, you should use ``json_int_t`` explicitly. +``JSON_INTEGER_IS_LONG_LONG`` + + This is a preprocessor variable that holds the value 1 if + :ctype:`json_int_t` is ``long long``, and 0 if it's ``long``. It + can be used as follows:: + + #if JSON_INTEGER_IS_LONG_LONG + /* Code specific for long long */ + #else + /* Code specific for long */ + #endif + ``JSON_INTEGER_FORMAT`` This is a macro that expands to a :cfunc:`printf()` conversion diff --git a/src/jansson_config.h.in b/src/jansson_config.h.in index d55d992..d2a9392 100644 --- a/src/jansson_config.h.in +++ b/src/jansson_config.h.in @@ -11,29 +11,24 @@ * * The configure script copies this file to jansson_config.h and * replaces @var@ substitutions by values that fit your system. If you - * cannot run the configure script, you can copy the file and do the - * value substitution by hand. - * - * See below for explanations of each substitution variable. + * cannot run the configure script, you can do the value substitution + * by hand. */ #ifndef JANSSON_CONFIG_H #define JANSSON_CONFIG_H +/* If your compiler supports the inline keyword in C, JSON_INLINE is + defined to `inline', otherwise empty. In C++, the inline is always + supported. */ #ifdef __cplusplus #define JSON_INLINE inline #else -/* If your compiler supports the inline keyword, @json_inline@ is - replaced with `inline', otherwise empty. */ #define JSON_INLINE @json_inline@ #endif /* If your compiler supports the `long long` type, - @json_have_long_long@ is replaced with 1, otherwise with 0. */ -#if @json_have_long_long@ -#define JSON_INTEGER_IS_LONG_LONG 1 -#else -#define JSON_INTEGER_IS_LONG 1 -#endif + JSON_INTEGER_IS_LONG_LONG is defined to 1, otherwise to 0. */ +#define JSON_INTEGER_IS_LONG_LONG @json_have_long_long@ #endif diff --git a/src/load.c b/src/load.c index 0576080..17ebcb7 100644 --- a/src/load.c +++ b/src/load.c @@ -401,7 +401,7 @@ out: free(lex->value.string); } -#ifdef JSON_INTEGER_IS_LONG_LONG +#if JSON_INTEGER_IS_LONG_LONG #define json_strtoint strtoll #else #define json_strtoint strtol