diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-10-19 15:59:56 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-10-19 15:59:56 +0000 |
commit | 1713d319b714502df37078ed2a0bf5a3496b9ac4 (patch) | |
tree | 9a60bcac75afef17ab3eac608d45eec7a279a07a | |
parent | 3bdf7962a7cf5a73e2235d7af811ed310806e545 (diff) |
* numbers.c (scm_i_range_error): New.
* conv-integer.i.c, conv-uinteger.i.c: Use it instead of
scm_out_of_range.
-rw-r--r-- | libguile/conv-integer.i.c | 8 | ||||
-rw-r--r-- | libguile/conv-uinteger.i.c | 4 | ||||
-rw-r--r-- | libguile/numbers.c | 10 |
3 files changed, 18 insertions, 4 deletions
diff --git a/libguile/conv-integer.i.c b/libguile/conv-integer.i.c index 82b81012d..4cf887cb6 100644 --- a/libguile/conv-integer.i.c +++ b/libguile/conv-integer.i.c @@ -1,10 +1,10 @@ -/* This code in included by number.s.c to generate integer conversion +/* This code in included by numbers.c to generate integer conversion functions like scm_to_int and scm_from_int. It is only for signed types, see conv-uinteger.i.c for the unsigned variant. */ /* You need to define the following macros before including this - template. They are undefined at the end of this file to giove a + template. They are undefined at the end of this file to give a clean slate for the next inclusion. TYPE - the integral type to be converted @@ -91,7 +91,9 @@ SCM_TO_TYPE_PROTO (SCM val) else { out_of_range: - scm_out_of_range (NULL, val); + scm_i_range_error (val, + scm_from_signed_integer (TYPE_MIN), + scm_from_signed_integer (TYPE_MAX)); return 0; } } diff --git a/libguile/conv-uinteger.i.c b/libguile/conv-uinteger.i.c index 0917b9bee..ff0d28012 100644 --- a/libguile/conv-uinteger.i.c +++ b/libguile/conv-uinteger.i.c @@ -35,7 +35,9 @@ SCM_TO_TYPE_PROTO (SCM val) else { out_of_range: - scm_out_of_range (NULL, val); + scm_i_range_error (val, + scm_from_unsigned_integer (TYPE_MIN), + scm_from_unsigned_integer (TYPE_MAX)); return 0; } } diff --git a/libguile/numbers.c b/libguile/numbers.c index 2c9a7ea6f..8b83f786a 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -5595,6 +5595,16 @@ scm_is_unsigned_integer (SCM val, scm_t_uintmax min, scm_t_uintmax max) return 0; } +static void +scm_i_range_error (SCM bad_val, SCM min, SCM max) +{ + scm_error (scm_out_of_range_key, + NULL, + "Value out of range ~S to ~S: ~S", + scm_list_3 (min, max, bad_val), + scm_list_1 (bad_val)); +} + #define TYPE scm_t_intmax #define TYPE_MIN min #define TYPE_MAX max |