summaryrefslogtreecommitdiff
path: root/libguile/hooks.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-12-21 21:06:27 +0100
committerAndy Wingo <wingo@pobox.com>2009-12-21 21:06:27 +0100
commit86fd6dff2a77150148ed7b3d9152e0a431070666 (patch)
tree566f285b090bfd155894cbf0b8e5e7dd7ba709b6 /libguile/hooks.c
parent700908288cdafd7d68dc2861e2348f38aeb38782 (diff)
downloadguile-86fd6dff2a77150148ed7b3d9152e0a431070666.tar.gz
add scm_call_n, scm_c_run_hookn
* libguile/eval.h: * libguile/eval.c (scm_call_n): New function, applies a function to an array of args. * libguile/hooks.h: * libguile/hooks.c (scm_c_run_hookn): New function, runs a hook with an array of args.
Diffstat (limited to 'libguile/hooks.c')
-rw-r--r--libguile/hooks.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libguile/hooks.c b/libguile/hooks.c
index d7bf018be..abba606f7 100644
--- a/libguile/hooks.c
+++ b/libguile/hooks.c
@@ -276,6 +276,17 @@ scm_c_run_hook (SCM hook, SCM args)
}
}
+void
+scm_c_run_hookn (SCM hook, SCM *argv, size_t nargs)
+{
+ SCM procs = SCM_HOOK_PROCEDURES (hook);
+ while (SCM_NIMP (procs))
+ {
+ scm_call_n (SCM_CAR (procs), argv, nargs);
+ procs = SCM_CDR (procs);
+ }
+}
+
SCM_DEFINE (scm_hook_to_list, "hook->list", 1, 0, 0,
(SCM hook),