1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-15 16:20:17 +02:00

Use stdint.h limit macros

* libguile/__scm.h: Include <stdint.h>, now that we rely on C99.
  (SCM_T_UINT8_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT16_MAX)
  (SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT32_MAX, SCM_T_INT32_MIN)
  (SCM_T_INT32_MAX, SCM_T_UINT64_MAX, SCM_T_INT64_MIN, SCM_T_INT64_MAX)
  (SCM_T_UINTMAX_MAX, SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX)
  (SCM_T_UINTPTR_MAX, SCM_T_INTPTR_MIN, SCM_T_INTPTR_MAX): Define in
  terms of equivalent stdint.h definitions.
* libguile/gen-scmconfig.c:
* libguile/instructions.c:
* libguile/numbers.c:
* libguile/random.c:
* libguile/tags.h:
* test-suite/standalone/test-conversion.c: Adapt to use C99 names.
This commit is contained in:
Andy Wingo 2018-06-20 14:55:49 +02:00
parent e605b518ee
commit 2eb8fa1751
7 changed files with 128 additions and 125 deletions

View file

@ -37,6 +37,8 @@
The main documentation is in gen-scmconfig.c. The main documentation is in gen-scmconfig.c.
**********************************************************************/ **********************************************************************/
#include <stdint.h>
/* What did the configure script discover about the outside world? */ /* What did the configure script discover about the outside world? */
#include "libguile/scmconfig.h" #include "libguile/scmconfig.h"
@ -289,29 +291,29 @@
#define SCM_I_TYPE_MAX(type,umax) ((type)((umax)/2)) #define SCM_I_TYPE_MAX(type,umax) ((type)((umax)/2))
#define SCM_I_TYPE_MIN(type,umax) (-((type)((umax)/2))-1) #define SCM_I_TYPE_MIN(type,umax) (-((type)((umax)/2))-1)
#define SCM_T_UINT8_MAX SCM_I_UTYPE_MAX(scm_t_uint8) #define SCM_T_UINT8_MAX UINT8_MAX
#define SCM_T_INT8_MIN SCM_I_TYPE_MIN(scm_t_int8,SCM_T_UINT8_MAX) #define SCM_T_INT8_MIN INT8_MIN
#define SCM_T_INT8_MAX SCM_I_TYPE_MAX(scm_t_int8,SCM_T_UINT8_MAX) #define SCM_T_INT8_MAX INT8_MAX
#define SCM_T_UINT16_MAX SCM_I_UTYPE_MAX(scm_t_uint16) #define SCM_T_UINT16_MAX UINT16_MAX
#define SCM_T_INT16_MIN SCM_I_TYPE_MIN(scm_t_int16,SCM_T_UINT16_MAX) #define SCM_T_INT16_MIN INT16_MIN
#define SCM_T_INT16_MAX SCM_I_TYPE_MAX(scm_t_int16,SCM_T_UINT16_MAX) #define SCM_T_INT16_MAX INT16_MAX
#define SCM_T_UINT32_MAX SCM_I_UTYPE_MAX(scm_t_uint32) #define SCM_T_UINT32_MAX UINT32_MAX
#define SCM_T_INT32_MIN SCM_I_TYPE_MIN(scm_t_int32,SCM_T_UINT32_MAX) #define SCM_T_INT32_MIN INT32_MIN
#define SCM_T_INT32_MAX SCM_I_TYPE_MAX(scm_t_int32,SCM_T_UINT32_MAX) #define SCM_T_INT32_MAX INT32_MAX
#define SCM_T_UINT64_MAX SCM_I_UTYPE_MAX(scm_t_uint64) #define SCM_T_UINT64_MAX UINT64_MAX
#define SCM_T_INT64_MIN SCM_I_TYPE_MIN(scm_t_int64,SCM_T_UINT64_MAX) #define SCM_T_INT64_MIN INT64_MIN
#define SCM_T_INT64_MAX SCM_I_TYPE_MAX(scm_t_int64,SCM_T_UINT64_MAX) #define SCM_T_INT64_MAX INT64_MAX
#define SCM_T_UINTMAX_MAX SCM_I_UTYPE_MAX(scm_t_uintmax) #define SCM_T_UINTMAX_MAX UINTMAX_MAX
#define SCM_T_INTMAX_MIN SCM_I_TYPE_MIN(scm_t_intmax,SCM_T_UINTMAX_MAX) #define SCM_T_INTMAX_MIN INTMAX_MIN
#define SCM_T_INTMAX_MAX SCM_I_TYPE_MAX(scm_t_intmax,SCM_T_UINTMAX_MAX) #define SCM_T_INTMAX_MAX INTMAX_MAX
#define SCM_T_UINTPTR_MAX SCM_I_UTYPE_MAX(scm_t_uintptr) #define SCM_T_UINTPTR_MAX UINTPTR_MAX
#define SCM_T_INTPTR_MIN SCM_I_TYPE_MIN(scm_t_intptr,SCM_T_UINTPTR_MAX) #define SCM_T_INTPTR_MIN INTPTR_MIN
#define SCM_T_INTPTR_MAX SCM_I_TYPE_MAX(scm_t_intptr,SCM_T_UINTPTR_MAX) #define SCM_T_INTPTR_MAX INTPTR_MAX

View file

@ -375,8 +375,8 @@ main (int argc, char *argv[])
#if defined GUILE_USE_64_CALLS && defined HAVE_STAT64 #if defined GUILE_USE_64_CALLS && defined HAVE_STAT64
pf ("typedef scm_t_int64 scm_t_off;\n"); pf ("typedef scm_t_int64 scm_t_off;\n");
pf ("#define SCM_T_OFF_MAX SCM_T_INT64_MAX\n"); pf ("#define SCM_T_OFF_MAX INT64_MAX\n");
pf ("#define SCM_T_OFF_MIN SCM_T_INT64_MIN\n"); pf ("#define SCM_T_OFF_MIN INT64_MIN\n");
#elif SIZEOF_OFF_T == SIZEOF_INT #elif SIZEOF_OFF_T == SIZEOF_INT
pf ("typedef int scm_t_off;\n"); pf ("typedef int scm_t_off;\n");
pf ("#define SCM_T_OFF_MAX INT_MAX\n"); pf ("#define SCM_T_OFF_MAX INT_MAX\n");

View file

@ -103,7 +103,7 @@ static SCM word_type_symbols[] =
by Scheme to generate assemblers and disassemblers for the by Scheme to generate assemblers and disassemblers for the
instructions. */ instructions. */
#define NOP SCM_T_UINT64_MAX #define NOP UINT64_MAX
#define OP1(type0) \ #define OP1(type0) \
(OP (0, type0)) (OP (0, type0))
#define OP2(type0, type1) \ #define OP2(type0, type1) \

View file

@ -9742,8 +9742,8 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#include "libguile/conv-uinteger.i.c" #include "libguile/conv-uinteger.i.c"
#define TYPE scm_t_int8 #define TYPE scm_t_int8
#define TYPE_MIN SCM_T_INT8_MIN #define TYPE_MIN INT8_MIN
#define TYPE_MAX SCM_T_INT8_MAX #define TYPE_MAX INT8_MAX
#define SIZEOF_TYPE 1 #define SIZEOF_TYPE 1
#define SCM_TO_TYPE_PROTO(arg) scm_to_int8 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_int8 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_int8 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_int8 (arg)
@ -9751,15 +9751,15 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#define TYPE scm_t_uint8 #define TYPE scm_t_uint8
#define TYPE_MIN 0 #define TYPE_MIN 0
#define TYPE_MAX SCM_T_UINT8_MAX #define TYPE_MAX UINT8_MAX
#define SIZEOF_TYPE 1 #define SIZEOF_TYPE 1
#define SCM_TO_TYPE_PROTO(arg) scm_to_uint8 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_uint8 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_uint8 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_uint8 (arg)
#include "libguile/conv-uinteger.i.c" #include "libguile/conv-uinteger.i.c"
#define TYPE scm_t_int16 #define TYPE scm_t_int16
#define TYPE_MIN SCM_T_INT16_MIN #define TYPE_MIN INT16_MIN
#define TYPE_MAX SCM_T_INT16_MAX #define TYPE_MAX INT16_MAX
#define SIZEOF_TYPE 2 #define SIZEOF_TYPE 2
#define SCM_TO_TYPE_PROTO(arg) scm_to_int16 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_int16 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_int16 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_int16 (arg)
@ -9767,15 +9767,15 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#define TYPE scm_t_uint16 #define TYPE scm_t_uint16
#define TYPE_MIN 0 #define TYPE_MIN 0
#define TYPE_MAX SCM_T_UINT16_MAX #define TYPE_MAX UINT16_MAX
#define SIZEOF_TYPE 2 #define SIZEOF_TYPE 2
#define SCM_TO_TYPE_PROTO(arg) scm_to_uint16 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_uint16 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_uint16 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_uint16 (arg)
#include "libguile/conv-uinteger.i.c" #include "libguile/conv-uinteger.i.c"
#define TYPE scm_t_int32 #define TYPE scm_t_int32
#define TYPE_MIN SCM_T_INT32_MIN #define TYPE_MIN INT32_MIN
#define TYPE_MAX SCM_T_INT32_MAX #define TYPE_MAX INT32_MAX
#define SIZEOF_TYPE 4 #define SIZEOF_TYPE 4
#define SCM_TO_TYPE_PROTO(arg) scm_to_int32 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_int32 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_int32 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_int32 (arg)
@ -9783,7 +9783,7 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#define TYPE scm_t_uint32 #define TYPE scm_t_uint32
#define TYPE_MIN 0 #define TYPE_MIN 0
#define TYPE_MAX SCM_T_UINT32_MAX #define TYPE_MAX UINT32_MAX
#define SIZEOF_TYPE 4 #define SIZEOF_TYPE 4
#define SCM_TO_TYPE_PROTO(arg) scm_to_uint32 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_uint32 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_uint32 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_uint32 (arg)
@ -9798,8 +9798,8 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#include "libguile/conv-integer.i.c" #include "libguile/conv-integer.i.c"
#define TYPE scm_t_int64 #define TYPE scm_t_int64
#define TYPE_MIN SCM_T_INT64_MIN #define TYPE_MIN INT64_MIN
#define TYPE_MAX SCM_T_INT64_MAX #define TYPE_MAX INT64_MAX
#define SIZEOF_TYPE 8 #define SIZEOF_TYPE 8
#define SCM_TO_TYPE_PROTO(arg) scm_to_int64 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_int64 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_int64 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_int64 (arg)
@ -9807,7 +9807,7 @@ scm_i_range_error (SCM bad_val, SCM min, SCM max)
#define TYPE scm_t_uint64 #define TYPE scm_t_uint64
#define TYPE_MIN 0 #define TYPE_MIN 0
#define TYPE_MAX SCM_T_UINT64_MAX #define TYPE_MAX UINT64_MAX
#define SIZEOF_TYPE 8 #define SIZEOF_TYPE 8
#define SCM_TO_TYPE_PROTO(arg) scm_to_uint64 (arg) #define SCM_TO_TYPE_PROTO(arg) scm_to_uint64 (arg)
#define SCM_FROM_TYPE_PROTO(arg) scm_from_uint64 (arg) #define SCM_FROM_TYPE_PROTO(arg) scm_from_uint64 (arg)

View file

@ -278,7 +278,7 @@ scm_c_random64 (scm_t_rstate *state, scm_t_uint64 m)
scm_t_uint64 r; scm_t_uint64 r;
scm_t_uint32 mask; scm_t_uint32 mask;
if (m <= SCM_T_UINT32_MAX) if (m <= UINT32_MAX)
return scm_c_random (state, (scm_t_uint32) m); return scm_c_random (state, (scm_t_uint32) m);
mask = scm_i_mask32 (m >> 32); mask = scm_i_mask32 (m >> 32);

View file

@ -63,9 +63,9 @@
typedef scm_t_intptr scm_t_signed_bits; typedef scm_t_intptr scm_t_signed_bits;
typedef scm_t_uintptr scm_t_bits; typedef scm_t_uintptr scm_t_bits;
#define SCM_T_SIGNED_BITS_MAX SCM_T_INTPTR_MAX #define SCM_T_SIGNED_BITS_MAX INTPTR_MAX
#define SCM_T_SIGNED_BITS_MIN SCM_T_INTPTR_MIN #define SCM_T_SIGNED_BITS_MIN INTPTR_MIN
#define SCM_T_BITS_MAX SCM_T_UINTPTR_MAX #define SCM_T_BITS_MAX UINTPTR_MAX
/* But as external interface, we define SCM, which may, according to the /* But as external interface, we define SCM, which may, according to the

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1999,2000,2001,2003,2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. /* Copyright (C) 1999-2001,2003-2004,2006-2010,2018
* Free Software Foundation, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -59,57 +60,57 @@ static void
test_is_signed_integer () test_is_signed_integer ()
{ {
test_1 ("'foo", test_1 ("'foo",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
test_1 ("3.0", test_1 ("3.0",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
test_1 ("(inexact->exact 3.0)", test_1 ("(inexact->exact 3.0)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("3.5", test_1 ("3.5",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
test_1 ("most-positive-fixnum", test_1 ("most-positive-fixnum",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(+ most-positive-fixnum 1)", test_1 ("(+ most-positive-fixnum 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("most-negative-fixnum", test_1 ("most-negative-fixnum",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(- most-negative-fixnum 1)", test_1 ("(- most-negative-fixnum 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_1 ("(- (expt 2 63) 1)", test_1 ("(- (expt 2 63) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(expt 2 63)", test_1 ("(expt 2 63)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
test_1 ("(- (expt 2 63))", test_1 ("(- (expt 2 63))",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(- (- (expt 2 63)) 1)", test_1 ("(- (- (expt 2 63)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_1 ("(- (expt 2 31) 1)", test_1 ("(- (expt 2 31) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(expt 2 31)", test_1 ("(expt 2 31)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
test_1 ("(- (expt 2 31))", test_1 ("(- (expt 2 31))",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
1); 1);
test_1 ("(- (- (expt 2 31)) 1)", test_1 ("(- (- (expt 2 31)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0); 0);
} }
else else
@ -145,45 +146,45 @@ static void
test_is_unsigned_integer () test_is_unsigned_integer ()
{ {
test_2 ("'foo", test_2 ("'foo",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
test_2 ("3.0", test_2 ("3.0",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
test_2 ("(inexact->exact 3.0)", test_2 ("(inexact->exact 3.0)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
1); 1);
test_2 ("3.5", test_2 ("3.5",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
test_2 ("most-positive-fixnum", test_2 ("most-positive-fixnum",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
1); 1);
test_2 ("(+ most-positive-fixnum 1)", test_2 ("(+ most-positive-fixnum 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
1); 1);
test_2 ("most-negative-fixnum", test_2 ("most-negative-fixnum",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
test_2 ("(- most-negative-fixnum 1)", test_2 ("(- most-negative-fixnum 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_2 ("(- (expt 2 64) 1)", test_2 ("(- (expt 2 64) 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
1); 1);
test_2 ("(expt 2 64)", test_2 ("(expt 2 64)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_2 ("(- (expt 2 32) 1)", test_2 ("(- (expt 2 32) 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
1); 1);
test_2 ("(expt 2 32)", test_2 ("(expt 2 32)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0); 0);
} }
else else
@ -294,13 +295,13 @@ static void
test_to_signed_integer () test_to_signed_integer ()
{ {
test_3 ("'foo", test_3 ("'foo",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 0, 1); 0, 0, 1);
test_3 ("3.5", test_3 ("3.5",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 0, 1); 0, 0, 1);
test_3 ("12", test_3 ("12",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
12, 0, 0); 12, 0, 0);
test_3 ("1000", test_3 ("1000",
-999, 999, -999, 999,
@ -309,51 +310,51 @@ test_to_signed_integer ()
-999, 999, -999, 999,
0, 1, 0); 0, 1, 0);
test_3 ("most-positive-fixnum", test_3 ("most-positive-fixnum",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_MOST_POSITIVE_FIXNUM, 0, 0); SCM_MOST_POSITIVE_FIXNUM, 0, 0);
test_3 ("most-negative-fixnum", test_3 ("most-negative-fixnum",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_MOST_NEGATIVE_FIXNUM, 0, 0); SCM_MOST_NEGATIVE_FIXNUM, 0, 0);
test_3 ("(+ most-positive-fixnum 1)", test_3 ("(+ most-positive-fixnum 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_MOST_POSITIVE_FIXNUM+1, 0, 0); SCM_MOST_POSITIVE_FIXNUM+1, 0, 0);
test_3 ("(- most-negative-fixnum 1)", test_3 ("(- most-negative-fixnum 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_MOST_NEGATIVE_FIXNUM-1, 0, 0); SCM_MOST_NEGATIVE_FIXNUM-1, 0, 0);
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_3 ("(- (expt 2 63) 1)", test_3 ("(- (expt 2 63) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MAX, 0, 0); INTMAX_MAX, 0, 0);
test_3 ("(+ (- (expt 2 63)) 1)", test_3 ("(+ (- (expt 2 63)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MIN+1, 0, 0); INTMAX_MIN+1, 0, 0);
test_3 ("(- (expt 2 63))", test_3 ("(- (expt 2 63))",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MIN, 0, 0); INTMAX_MIN, 0, 0);
test_3 ("(expt 2 63)", test_3 ("(expt 2 63)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 1, 0); 0, 1, 0);
test_3 ("(- (- (expt 2 63)) 1)", test_3 ("(- (- (expt 2 63)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 1, 0); 0, 1, 0);
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_3 ("(- (expt 2 31) 1)", test_3 ("(- (expt 2 31) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MAX, 0, 0); INTMAX_MAX, 0, 0);
test_3 ("(+ (- (expt 2 31)) 1)", test_3 ("(+ (- (expt 2 31)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MIN+1, 0, 0); INTMAX_MIN+1, 0, 0);
test_3 ("(- (expt 2 31))", test_3 ("(- (expt 2 31))",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
SCM_T_INTMAX_MIN, 0, 0); INTMAX_MIN, 0, 0);
test_3 ("(expt 2 31)", test_3 ("(expt 2 31)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 1, 0); 0, 1, 0);
test_3 ("(- (- (expt 2 31)) 1)", test_3 ("(- (- (expt 2 31)) 1)",
SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, INTMAX_MIN, INTMAX_MAX,
0, 1, 0); 0, 1, 0);
} }
else else
@ -429,39 +430,39 @@ static void
test_to_unsigned_integer () test_to_unsigned_integer ()
{ {
test_4 ("'foo", test_4 ("'foo",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0, 0, 1); 0, 0, 1);
test_4 ("3.5", test_4 ("3.5",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0, 0, 1); 0, 0, 1);
test_4 ("12", test_4 ("12",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
12, 0, 0); 12, 0, 0);
test_4 ("1000", test_4 ("1000",
0, 999, 0, 999,
0, 1, 0); 0, 1, 0);
test_4 ("most-positive-fixnum", test_4 ("most-positive-fixnum",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
SCM_MOST_POSITIVE_FIXNUM, 0, 0); SCM_MOST_POSITIVE_FIXNUM, 0, 0);
test_4 ("(+ most-positive-fixnum 1)", test_4 ("(+ most-positive-fixnum 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
SCM_MOST_POSITIVE_FIXNUM+1, 0, 0); SCM_MOST_POSITIVE_FIXNUM+1, 0, 0);
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_4 ("(- (expt 2 64) 1)", test_4 ("(- (expt 2 64) 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
SCM_T_UINTMAX_MAX, 0, 0); UINTMAX_MAX, 0, 0);
test_4 ("(expt 2 64)", test_4 ("(expt 2 64)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0, 1, 0); 0, 1, 0);
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_4 ("(- (expt 2 32) 1)", test_4 ("(- (expt 2 32) 1)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
SCM_T_UINTMAX_MAX, 0, 0); UINTMAX_MAX, 0, 0);
test_4 ("(expt 2 32)", test_4 ("(expt 2 32)",
0, SCM_T_UINTMAX_MAX, 0, UINTMAX_MAX,
0, 1, 0); 0, 1, 0);
} }
else else
@ -486,13 +487,13 @@ test_from_signed_integer ()
test_5 (12, "12"); test_5 (12, "12");
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_5 (SCM_T_INTMAX_MAX, "(- (expt 2 63) 1)"); test_5 (INTMAX_MAX, "(- (expt 2 63) 1)");
test_5 (SCM_T_INTMAX_MIN, "(- (expt 2 63))"); test_5 (INTMAX_MIN, "(- (expt 2 63))");
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_5 (SCM_T_INTMAX_MAX, "(- (expt 2 31) 1)"); test_5 (INTMAX_MAX, "(- (expt 2 31) 1)");
test_5 (SCM_T_INTMAX_MIN, "(- (expt 2 31))"); test_5 (INTMAX_MIN, "(- (expt 2 31))");
} }
test_5 (SCM_MOST_POSITIVE_FIXNUM, "most-positive-fixnum"); test_5 (SCM_MOST_POSITIVE_FIXNUM, "most-positive-fixnum");
test_5 (SCM_MOST_NEGATIVE_FIXNUM, "most-negative-fixnum"); test_5 (SCM_MOST_NEGATIVE_FIXNUM, "most-negative-fixnum");
@ -519,11 +520,11 @@ test_from_unsigned_integer ()
test_6 (12, "12"); test_6 (12, "12");
if (sizeof (scm_t_intmax) == 8) if (sizeof (scm_t_intmax) == 8)
{ {
test_6 (SCM_T_UINTMAX_MAX, "(- (expt 2 64) 1)"); test_6 (UINTMAX_MAX, "(- (expt 2 64) 1)");
} }
else if (sizeof (scm_t_intmax) == 4) else if (sizeof (scm_t_intmax) == 4)
{ {
test_6 (SCM_T_UINTMAX_MAX, "(- (expt 2 32) 1)"); test_6 (UINTMAX_MAX, "(- (expt 2 32) 1)");
} }
test_6 (SCM_MOST_POSITIVE_FIXNUM, "most-positive-fixnum"); test_6 (SCM_MOST_POSITIVE_FIXNUM, "most-positive-fixnum");
test_6 (SCM_MOST_POSITIVE_FIXNUM+1, "(+ most-positive-fixnum 1)"); test_6 (SCM_MOST_POSITIVE_FIXNUM+1, "(+ most-positive-fixnum 1)");
@ -739,14 +740,14 @@ test_int_sizes ()
TEST_7S (scm_from_int16, 32768, "-32768"); TEST_7S (scm_from_int16, 32768, "-32768");
TEST_7U (scm_from_uint16, 65535, "65535"); TEST_7U (scm_from_uint16, 65535, "65535");
TEST_7S (scm_from_int32, SCM_T_INT32_MIN, "-2147483648"); TEST_7S (scm_from_int32, INT32_MIN, "-2147483648");
TEST_7S (scm_from_int32, SCM_T_INT32_MAX, "2147483647"); TEST_7S (scm_from_int32, INT32_MAX, "2147483647");
TEST_7S (scm_from_int32, SCM_T_INT32_MAX+1LL, "-2147483648"); TEST_7S (scm_from_int32, INT32_MAX+1LL, "-2147483648");
TEST_7U (scm_from_uint32, SCM_T_UINT32_MAX, "4294967295"); TEST_7U (scm_from_uint32, UINT32_MAX, "4294967295");
TEST_7S (scm_from_int64, SCM_T_INT64_MIN, "-9223372036854775808"); TEST_7S (scm_from_int64, INT64_MIN, "-9223372036854775808");
TEST_7S (scm_from_int64, SCM_T_INT64_MAX, "9223372036854775807"); TEST_7S (scm_from_int64, INT64_MAX, "9223372036854775807");
TEST_7U (scm_from_uint64, SCM_T_UINT64_MAX, "18446744073709551615"); TEST_7U (scm_from_uint64, UINT64_MAX, "18446744073709551615");
TEST_8S ("91", scm_to_schar, 91, 0, 0); TEST_8S ("91", scm_to_schar, 91, 0, 0);
TEST_8U ("91", scm_to_uchar, 91, 0, 0); TEST_8U ("91", scm_to_uchar, 91, 0, 0);
@ -764,38 +765,38 @@ test_int_sizes ()
TEST_8U ("911", scm_to_size_t, 911, 0, 0); TEST_8U ("911", scm_to_size_t, 911, 0, 0);
TEST_8S ("911", scm_to_ssize_t, 911, 0, 0); TEST_8S ("911", scm_to_ssize_t, 911, 0, 0);
TEST_8S ("-128", scm_to_int8, SCM_T_INT8_MIN, 0, 0); TEST_8S ("-128", scm_to_int8, INT8_MIN, 0, 0);
TEST_8S ("127", scm_to_int8, SCM_T_INT8_MAX, 0, 0); TEST_8S ("127", scm_to_int8, INT8_MAX, 0, 0);
TEST_8S ("128", scm_to_int8, 0, 1, 0); TEST_8S ("128", scm_to_int8, 0, 1, 0);
TEST_8S ("#f", scm_to_int8, 0, 0, 1); TEST_8S ("#f", scm_to_int8, 0, 0, 1);
TEST_8U ("255", scm_to_uint8, SCM_T_UINT8_MAX, 0, 0); TEST_8U ("255", scm_to_uint8, UINT8_MAX, 0, 0);
TEST_8U ("256", scm_to_uint8, 0, 1, 0); TEST_8U ("256", scm_to_uint8, 0, 1, 0);
TEST_8U ("-1", scm_to_uint8, 0, 1, 0); TEST_8U ("-1", scm_to_uint8, 0, 1, 0);
TEST_8U ("#f", scm_to_uint8, 0, 0, 1); TEST_8U ("#f", scm_to_uint8, 0, 0, 1);
TEST_8S ("-32768", scm_to_int16, SCM_T_INT16_MIN, 0, 0); TEST_8S ("-32768", scm_to_int16, INT16_MIN, 0, 0);
TEST_8S ("32767", scm_to_int16, SCM_T_INT16_MAX, 0, 0); TEST_8S ("32767", scm_to_int16, INT16_MAX, 0, 0);
TEST_8S ("32768", scm_to_int16, 0, 1, 0); TEST_8S ("32768", scm_to_int16, 0, 1, 0);
TEST_8S ("#f", scm_to_int16, 0, 0, 1); TEST_8S ("#f", scm_to_int16, 0, 0, 1);
TEST_8U ("65535", scm_to_uint16, SCM_T_UINT16_MAX, 0, 0); TEST_8U ("65535", scm_to_uint16, UINT16_MAX, 0, 0);
TEST_8U ("65536", scm_to_uint16, 0, 1, 0); TEST_8U ("65536", scm_to_uint16, 0, 1, 0);
TEST_8U ("-1", scm_to_uint16, 0, 1, 0); TEST_8U ("-1", scm_to_uint16, 0, 1, 0);
TEST_8U ("#f", scm_to_uint16, 0, 0, 1); TEST_8U ("#f", scm_to_uint16, 0, 0, 1);
TEST_8S ("-2147483648", scm_to_int32, SCM_T_INT32_MIN, 0, 0); TEST_8S ("-2147483648", scm_to_int32, INT32_MIN, 0, 0);
TEST_8S ("2147483647", scm_to_int32, SCM_T_INT32_MAX, 0, 0); TEST_8S ("2147483647", scm_to_int32, INT32_MAX, 0, 0);
TEST_8S ("2147483648", scm_to_int32, 0, 1, 0); TEST_8S ("2147483648", scm_to_int32, 0, 1, 0);
TEST_8S ("#f", scm_to_int32, 0, 0, 1); TEST_8S ("#f", scm_to_int32, 0, 0, 1);
TEST_8U ("4294967295", scm_to_uint32, SCM_T_UINT32_MAX, 0, 0); TEST_8U ("4294967295", scm_to_uint32, UINT32_MAX, 0, 0);
TEST_8U ("4294967296", scm_to_uint32, 0, 1, 0); TEST_8U ("4294967296", scm_to_uint32, 0, 1, 0);
TEST_8U ("-1", scm_to_uint32, 0, 1, 0); TEST_8U ("-1", scm_to_uint32, 0, 1, 0);
TEST_8U ("#f", scm_to_uint32, 0, 0, 1); TEST_8U ("#f", scm_to_uint32, 0, 0, 1);
TEST_8S ("-9223372036854775808", scm_to_int64, SCM_T_INT64_MIN, 0, 0); TEST_8S ("-9223372036854775808", scm_to_int64, INT64_MIN, 0, 0);
TEST_8S ("9223372036854775807", scm_to_int64, SCM_T_INT64_MAX, 0, 0); TEST_8S ("9223372036854775807", scm_to_int64, INT64_MAX, 0, 0);
TEST_8S ("9223372036854775808", scm_to_int64, 0, 1, 0); TEST_8S ("9223372036854775808", scm_to_int64, 0, 1, 0);
TEST_8S ("#f", scm_to_int64, 0, 0, 1); TEST_8S ("#f", scm_to_int64, 0, 0, 1);
TEST_8U ("18446744073709551615", scm_to_uint64, SCM_T_UINT64_MAX, 0, 0); TEST_8U ("18446744073709551615", scm_to_uint64, UINT64_MAX, 0, 0);
TEST_8U ("18446744073709551616", scm_to_uint64, 0, 1, 0); TEST_8U ("18446744073709551616", scm_to_uint64, 0, 1, 0);
TEST_8U ("-1", scm_to_uint64, 0, 1, 0); TEST_8U ("-1", scm_to_uint64, 0, 1, 0);
TEST_8U ("#f", scm_to_uint64, 0, 0, 1); TEST_8U ("#f", scm_to_uint64, 0, 0, 1);