2 listener.cc -- implement Listener and Listener_target
4 source file of the GNU LilyPond music typesetter
6 (c) 2005 Erik Sandberg <mandolaerik@gmail.com>
10 #include "ly-smobs.icc"
14 Listener_target::~Listener_target ()
19 Listener::Listener (const void *target, Listener_function_table *type)
21 target_ = (void *)target;
25 Listener::Listener (Listener const &other)
27 target_ = other.target_;
31 void Listener::listen (SCM ev) const {
32 (type_->listen_callback) (target_, ev);
36 Listener::mark_smob (SCM sm)
38 Listener *me = (Listener *) SCM_CELL_WORD_1 (sm);
39 (me->type_->mark_callback) (me->target_);
44 Listener::print_smob (SCM s, SCM p, scm_print_state*)
46 scm_puts ("#<Listener>", p);
51 Listener::equal_p (SCM a, SCM b)
53 Listener *l1 = unsmob_listener (a);
54 Listener *l2 = unsmob_listener (b);
56 return (*l1 == *l2) ? SCM_BOOL_T : SCM_BOOL_F;
59 IMPLEMENT_SIMPLE_SMOBS (Listener);
60 IMPLEMENT_TYPE_P (Listener, "listener");