/* listener-scheme.cc -- Connect listeners to Scheme through Scm_listener source file of the GNU LilyPond music typesetter (c) 2005-2006 Erik Sandberg
*/ #include "listener.hh" #include "ly-smobs.icc" #include "stream-event.hh" class Scm_listener { public: Scm_listener (SCM callback); DECLARE_LISTENER (listener); protected: DECLARE_SMOBS (Scm_listener,); private: SCM callback_; }; IMPLEMENT_LISTENER (Scm_listener, listener, (SCM ev)) { scm_call_1 (callback_, ev); } IMPLEMENT_SMOBS (Scm_listener); IMPLEMENT_DEFAULT_EQUAL_P (Scm_listener); Scm_listener::Scm_listener (SCM c) { callback_ = SCM_EOL; self_scm_ = SCM_EOL; smobify_self (); callback_ = c; } SCM Scm_listener::mark_smob (SCM obj) { Scm_listener *me = (Scm_listener *) SCM_CELL_WORD_1 (obj); return me->callback_; } int Scm_listener::print_smob (SCM obj, SCM p, scm_print_state*) { Scm_listener *me = (Scm_listener *) SCM_CELL_WORD_1 (obj); scm_puts ("#