mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-14 23:50:19 +02:00
scm_wta_* procedures replace SCM_WTA_* macros
* libguile/__scm.h: Move all the SCM_WTA and SCM_GASSERT macros out of here. Also remove the scm_call_generic declarations. * libguile/deprecated.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1): (SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_N): Deprecate. See below for their replacements. (SCM_GASSERT0, SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Deprecate these too. (SCM_WTA_DISPATCH_1_SUBR): Deprecate this strange thing. (scm_call_generic_0, scm_call_generic_1, scm_call_generic_2): (scm_call_generic_3, scm_apply_generic): Remove, indicating their replacements. * libguile/print.c (iprin1): * libguile/eq.c (scm_equal_p): Use scm_call_2 instead of scm_call_generic_2. * libguile/goops.h: * libguile/goops.c: Remove scm_{call,apply}_generic definitions. (scm_wta_dispatch_0, scm_wta_dispatch_1, scm_wta_dispatch_2): (scm_wta_dispatch_n): New procedures, replacing the SCM_WTA macros. * libguile/numbers.c (scm_lcm): * libguile/procs.c (scm_setter): Remove uses of SCM_GASSERT. * libguile/numbers.c (scm_lcm): * libguile/procs.c (scm_setter): * libguile/vectors.c: Use the procedural scm_wta routines instead of the SCM_WTA macros.
This commit is contained in:
parent
6703caf726
commit
fa075d40dc
9 changed files with 337 additions and 329 deletions
|
@ -1667,36 +1667,6 @@ SCM_KEYWORD (k_name, "name");
|
|||
SCM_GLOBAL_SYMBOL (scm_sym_args, "args");
|
||||
|
||||
|
||||
SCM
|
||||
scm_apply_generic (SCM gf, SCM args)
|
||||
{
|
||||
return scm_apply (SCM_STRUCT_PROCEDURE (gf), args, SCM_EOL);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_call_generic_0 (SCM gf)
|
||||
{
|
||||
return scm_call_0 (SCM_STRUCT_PROCEDURE (gf));
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_call_generic_1 (SCM gf, SCM a1)
|
||||
{
|
||||
return scm_call_1 (SCM_STRUCT_PROCEDURE (gf), a1);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_call_generic_2 (SCM gf, SCM a1, SCM a2)
|
||||
{
|
||||
return scm_call_2 (SCM_STRUCT_PROCEDURE (gf), a1, a2);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_call_generic_3 (SCM gf, SCM a1, SCM a2, SCM a3)
|
||||
{
|
||||
return scm_call_3 (SCM_STRUCT_PROCEDURE (gf), a1, a2, a3);
|
||||
}
|
||||
|
||||
SCM_SYMBOL (sym_delayed_compile, "delayed-compile");
|
||||
static SCM
|
||||
make_dispatch_procedure (SCM gf)
|
||||
|
@ -1840,6 +1810,47 @@ setup_extended_primitive_generics ()
|
|||
}
|
||||
}
|
||||
|
||||
/* Dirk:FIXME:: In all of these scm_wta_dispatch_* routines it is
|
||||
* assumed that 'gf' is zero if uninitialized. It would be cleaner if
|
||||
* some valid SCM value like SCM_BOOL_F or SCM_UNDEFINED were chosen.
|
||||
*/
|
||||
|
||||
SCM
|
||||
scm_wta_dispatch_0 (SCM gf, const char *subr)
|
||||
{
|
||||
if (!SCM_UNPACK (gf))
|
||||
scm_error_num_args_subr (subr);
|
||||
|
||||
return scm_call_0 (gf);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_wta_dispatch_1 (SCM gf, SCM a1, int pos, const char *subr)
|
||||
{
|
||||
if (!SCM_UNPACK (gf))
|
||||
scm_wrong_type_arg (subr, pos, a1);
|
||||
|
||||
return scm_call_1 (gf, a1);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_wta_dispatch_2 (SCM gf, SCM a1, SCM a2, int pos, const char *subr)
|
||||
{
|
||||
if (!SCM_UNPACK (gf))
|
||||
scm_wrong_type_arg (subr, pos, (pos == SCM_ARG1) ? a1 : a2);
|
||||
|
||||
return scm_call_2 (gf, a1, a2);
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_wta_dispatch_n (SCM gf, SCM args, int pos, const char *subr)
|
||||
{
|
||||
if (!SCM_UNPACK (gf))
|
||||
scm_wrong_type_arg (subr, pos, scm_list_ref (args, scm_from_int (pos)));
|
||||
|
||||
return scm_apply_0 (gf, args);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Protocol for calling a generic fumction
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue