mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
provide program apply_0, apply_1, apply_2 implementations
* libguile/programs.c (program_apply_0, program_apply_1) (program_apply_2, scm_bootstrap_programs): Provides some cons-less smob application procedures. This molests some internal interfaces, but hey, we're internal.
This commit is contained in:
parent
e14679bd52
commit
df8cd091f9
1 changed files with 24 additions and 0 deletions
|
@ -98,6 +98,27 @@ program_apply (SCM program, SCM args)
|
|||
return scm_vm_apply (scm_the_vm (), program, args);
|
||||
}
|
||||
|
||||
static SCM
|
||||
program_apply_0 (SCM program)
|
||||
{
|
||||
return scm_c_vm_run (scm_the_vm (), program, NULL, 0);
|
||||
}
|
||||
|
||||
static SCM
|
||||
program_apply_1 (SCM program, SCM a)
|
||||
{
|
||||
return scm_c_vm_run (scm_the_vm (), program, &a, 1);
|
||||
}
|
||||
|
||||
static SCM
|
||||
program_apply_2 (SCM program, SCM a, SCM b)
|
||||
{
|
||||
SCM args[2];
|
||||
args[0] = a;
|
||||
args[1] = b;
|
||||
return scm_c_vm_run (scm_the_vm (), program, args, 2);
|
||||
}
|
||||
|
||||
static int
|
||||
program_print (SCM program, SCM port, scm_print_state *pstate)
|
||||
{
|
||||
|
@ -343,6 +364,9 @@ scm_bootstrap_programs (void)
|
|||
scm_tc16_program = scm_make_smob_type ("program", 0);
|
||||
scm_set_smob_mark (scm_tc16_program, program_mark);
|
||||
scm_set_smob_apply (scm_tc16_program, program_apply, 0, 0, 1);
|
||||
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_0 = program_apply_0;
|
||||
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_1 = program_apply_1;
|
||||
scm_smobs[SCM_TC2SMOBNUM (scm_tc16_program)].apply_2 = program_apply_2;
|
||||
scm_set_smob_print (scm_tc16_program, program_print);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue