Provide a C vararg interface to gsubr invocation.
* libguile/eval.i.c (CEVAL): Update calls to `scm_i_gsubr_apply ()' with a fixed number of arguments. Use `scm_i_gsubr_apply_list ()' for calls with a list of arguments of unknown length. (SCM_APPLY): Use `scm_i_gsubr_apply_list ()' instead of `scm_i_gsubr_apply ()'. * libguile/gsubr.c (gsubr_apply_raw): New. (scm_i_gsubr_apply): Change to take a C vararg list instead of a Scheme list. Use `gsubr_apply_raw ()'. (scm_i_gsubr_apply_list): Use `gsubr_apply_raw ()'. * libguile/gsubr.h (scm_i_gsubr_apply): Update prototype. (scm_i_gsubr_apply_list): New declaration.
This commit is contained in:
parent
d18f4d805e
commit
8321ed20f6
3 changed files with 125 additions and 29 deletions
|
|
@ -48,7 +48,8 @@ SCM_API SCM scm_c_define_gsubr_with_generic (const char *name,
|
|||
int req, int opt, int rst,
|
||||
SCM (*fcn) (), SCM *gf);
|
||||
|
||||
SCM_INTERNAL SCM scm_i_gsubr_apply (SCM proc, SCM args);
|
||||
SCM_INTERNAL SCM scm_i_gsubr_apply (SCM proc, SCM arg, ...);
|
||||
SCM_INTERNAL SCM scm_i_gsubr_apply_list (SCM proc, SCM args);
|
||||
SCM_INTERNAL void scm_init_gsubr (void);
|
||||
|
||||
#endif /* SCM_GSUBR_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue