-static
-void mark_listen_closure (void *target)
-{
- scm_gc_mark ((SCM)target);
-}
-
-Listener_function_table listen_closure
-=
-{
- call_listen_closure, mark_listen_closure
-};
-
-/* static */
-Listener
-Scheme_engraver::get_listener (void *arg, SCM name)
-{
- Scheme_engraver *me = (Scheme_engraver *) arg;
- SCM func = ly_assoc_get (name, me->listeners_alist_, SCM_BOOL_F);
- assert (ly_is_procedure (func));
-
- SCM closure = scm_cons (func, me->self_scm ());
- return Listener ((void *)closure, &listen_closure);
-}
-
-translator_listener_record *
-Scheme_engraver::get_listener_list () const
-{
- return per_instance_listeners_;
-}
-
-#define DISPATCH(what) \
- void \
- Scheme_engraver::what () \
- { \
- if (what ## _function_ != SCM_BOOL_F) \
- scm_call_1 (what ## _function_, self_scm ()); \
- }
-
-DISPATCH (start_translation_timestep);
-DISPATCH (stop_translation_timestep);
-DISPATCH (initialize);
-DISPATCH (finalize);
-DISPATCH (process_music);
-DISPATCH (process_acknowledged);
-