diff options
author | Andy Wingo <wingo@pobox.com> | 2010-01-05 16:15:14 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-01-05 16:15:14 +0100 |
commit | 9fdf9fd3ea7130fd85eaf0a333a965ac4d2b07c3 (patch) | |
tree | 31ac376b1ce4cfb2757e222d39794577378f8c2f /libguile/procs.h | |
parent | e809758a7e0f3f63162a0a9064b95bd1c1d10628 (diff) | |
download | guile-9fdf9fd3ea7130fd85eaf0a333a965ac4d2b07c3.tar.gz |
move subr implementation details to gsubr.[ch]
* libguile/procs.h: Move subr macros to gsubr.h.
* libguile/procs.c (scm_c_make_subr, scm_c_make_subr_with_generic)
(scm_c_define_subr, scm_c_define_subr_with_generic): Remove these,
because they deal in subr types, and now there is only one subr type.
The body of this code is now in gsubr.c.
* libguile/deprecated.h (scm_subr_p): Remove from procs.[ch] and define
as a deprecated macro. Only used internally, but who knows who's out
there.
* libguile/goops.c (scm_generic_capability_p)
(scm_enable_primitive_generic_x, scm_set_primitive_generic_x)
(scm_primitive_generic_generic): Use the new SCM_PRIMITIVE_GENERIC_P
macro instead of calling scm_subr_p.
* libguile/gsubr.h (SCM_PRIMITIVE_P, SCM_PRIMITIVE_GENERIC_P): New
macros, to replace scm_subr_p and hacky checking for generic
capability.
(SCM_SUBR_META_INFO, SCM_SUBR_NAME, SCM_SUBRF, SCM_SUBR_PROPS)
(SCM_SUBR_GENERIC, SCM_SET_SUBR_GENERIC, SCM_SET_SUBR_GENERIC_LOC)
(SCM_SUBR_ARITY_TO_TYPE): Moved here from procs.h.
* libguile/gsubr.c (create_gsubr): Inline the
scm_c_make_subr definition here, and work for generics too. Removed a
scm_remember_upto_here_1 that was added earlier in the year when
meta_info was not being traced by the GC. Adapt callers.
Diffstat (limited to 'libguile/procs.h')
-rw-r--r-- | libguile/procs.h | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/libguile/procs.h b/libguile/procs.h index a832cd06f..a4dfaff3c 100644 --- a/libguile/procs.h +++ b/libguile/procs.h @@ -27,36 +27,8 @@ - -/* Subrs - */ - -#define SCM_SUBR_META_INFO(x) ((SCM *) SCM_CELL_WORD_3 (x)) -#define SCM_SUBR_NAME(x) (SCM_SUBR_META_INFO (x) [0]) -#define SCM_SUBRF(x) ((SCM (*)()) SCM_CELL_WORD_1 (x)) -#define SCM_SUBR_PROPS(x) (SCM_SUBR_META_INFO (x) [1]) -#define SCM_SUBR_GENERIC(x) ((SCM *) SCM_CELL_WORD_2 (x)) -#define SCM_SET_SUBR_GENERIC(x, g) (*((SCM *) SCM_CELL_WORD_2 (x)) = (g)) -#define SCM_SET_SUBR_GENERIC_LOC(x, g) (SCM_SET_CELL_WORD_2 (x, (scm_t_bits) g)) - -/* Return the most suitable subr type for a subr with REQ required arguments, - OPT optional arguments, and REST (0 or 1) arguments. This has to be in - sync with `create_gsubr ()'. */ -#define SCM_SUBR_ARITY_TO_TYPE(req, opt, rest) \ - (scm_tc7_gsubr | (SCM_GSUBR_MAKTYPE (req, opt, rest) << 8U)) - - - - -SCM_API SCM scm_c_make_subr (const char *name, long type, SCM (*fcn)()); -SCM_API SCM scm_c_make_subr_with_generic (const char *name, long type, - SCM (*fcn)(), SCM *gf); -SCM_API SCM scm_c_define_subr (const char *name, long type, SCM (*fcn)()); -SCM_API SCM scm_c_define_subr_with_generic (const char *name, long type, - SCM (*fcn)(), SCM *gf); SCM_API SCM scm_procedure_p (SCM obj); SCM_API SCM scm_thunk_p (SCM obj); -SCM_API int scm_subr_p (SCM obj); SCM_API SCM scm_procedure_documentation (SCM proc); SCM_API SCM scm_procedure_with_setter_p (SCM obj); SCM_API SCM scm_make_procedure_with_setter (SCM procedure, SCM setter); |