1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-28 16:00:22 +02:00

* numbers.c (scm_i_range_error): New.

* conv-integer.i.c, conv-uinteger.i.c: Use it instead of
scm_out_of_range.
This commit is contained in:
Marius Vollmer 2004-10-19 15:59:56 +00:00
parent 3bdf7962a7
commit 1713d319b7
3 changed files with 18 additions and 4 deletions

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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