mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-07 05:06:36 +02:00
WIP - apply with varargs
This commit is contained in:
parent
93eff719a7
commit
c46a8e57f6
1 changed files with 17 additions and 0 deletions
17
runtime.c
17
runtime.c
|
@ -2893,10 +2893,13 @@ void __121_123(void *data, object cont, object args)
|
|||
args);
|
||||
}
|
||||
|
||||
//object apply_va(void *data, int argc, object clo, object cont, object func, ...);
|
||||
void _apply(void *data, object cont, object args)
|
||||
{
|
||||
Cyc_check_num_args(data, "apply", 2, args);
|
||||
apply(data, cont, car(args), cadr(args));
|
||||
//object argc = Cyc_length(data, args);
|
||||
//dispatch(data, obj_obj2int(argc), (function_type)apply_va, cont, cont, args);
|
||||
}
|
||||
|
||||
void _assoc(void *data, object cont, object args)
|
||||
|
@ -3224,6 +3227,20 @@ void _call_95cc(void *data, object cont, object args)
|
|||
return_closcall2(data, __glo_call_95cc_scheme_base, cont, car(args));
|
||||
}
|
||||
|
||||
// TODO: Experimenting with supporting varargs for (apply). does not work yet
|
||||
object apply_va(void *data, int argc, object clo, object cont, object func, ...)
|
||||
{
|
||||
object tmp = NULL;
|
||||
int i;
|
||||
va_list ap;
|
||||
va_start(ap, func);
|
||||
for (i = 1; i < argc; i++) {
|
||||
tmp = va_arg(ap, object);
|
||||
}
|
||||
va_end(ap);
|
||||
apply(data, cont, func, tmp);
|
||||
}
|
||||
|
||||
/*
|
||||
* @param cont - Continuation for the function to call into
|
||||
* @param func - Function to execute
|
||||
|
|
Loading…
Add table
Reference in a new issue