1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-30 17:00:23 +02:00

Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>:

(scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
the other using intptr_t.
This commit is contained in:
Kevin Ryde 2003-07-08 00:41:34 +00:00
parent 005d2366ef
commit 23c96d9b15

View file

@ -39,24 +39,30 @@
/* In the beginning was the Word:
*/
#if SCM_SIZEOF_INTPTR_T != 0 && defined(INTPTR_MAX) && defined(INTPTR_MIN)
/* On Solaris 7 and 8, /usr/include/sys/int_limits.h defines
INTPTR_MAX and UINTPTR_MAX to empty, INTPTR_MIN is not defined.
To avoid uintptr_t and intptr_t in this case we require
UINTPTR_MAX-0 != 0 etc. */
#if SCM_SIZEOF_INTPTR_T != 0 && defined(INTPTR_MAX) && defined(INTPTR_MIN) \
&& INTPTR_MAX-0 != 0 && INTPTR_MIN-0 != 0 \
&& SCM_SIZEOF_UINTPTR_T != 0 && defined(UINTPTR_MAX) && UINTPTR_MAX-0 != 0
typedef intptr_t scm_t_signed_bits;
#define SCM_T_SIGNED_BITS_MAX INTPTR_MAX
#define SCM_T_SIGNED_BITS_MIN INTPTR_MIN
#else
typedef signed long scm_t_signed_bits;
#define SCM_T_SIGNED_BITS_MAX LONG_MAX
#define SCM_T_SIGNED_BITS_MIN LONG_MIN
#endif
#if SCM_SIZEOF_UINTPTR_T != 0 && defined(UINTPTR_MAX)
typedef uintptr_t scm_t_bits;
#define SIZEOF_SCM_T_BITS SCM_SIZEOF_UINTPTR_T
#define SCM_T_BITS_MAX UINTPTR_MAX
#else
typedef signed long scm_t_signed_bits;
#define SCM_T_SIGNED_BITS_MAX LONG_MAX
#define SCM_T_SIGNED_BITS_MIN LONG_MIN
typedef unsigned long scm_t_bits;
#define SIZEOF_SCM_T_BITS SCM_SIZEOF_UNSIGNED_LONG
#define SCM_T_BITS_MAX ULONG_MAX
#endif
/* But as external interface, we use SCM, which may, according to the desired