X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flistener.cc;h=50f1969ecb418c4735715fc8c77bf9f08963b080;hb=8f2f4d6f0af1626a333050d367211a7d73437082;hp=c8202a9d345d6ef8d9d0fabe066d688cd380a5e6;hpb=a6a733a8e2f138a4c30d7abdff7b0372d9b9fb97;p=lilypond.git diff --git a/lily/listener.cc b/lily/listener.cc index c8202a9d34..50f1969ecb 100644 --- a/lily/listener.cc +++ b/lily/listener.cc @@ -1,13 +1,23 @@ /* - listener.cc -- implement Listener and Listener_target + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005 Erik Sandberg - (c) 2005 Erik Sandberg + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "listener.hh" -#include "ly-smobs.icc" #include "warn.hh" Listener::Listener () @@ -25,37 +35,29 @@ Listener::Listener (const void *target, Listener_function_table *type) Listener::Listener (Listener const &other) { target_ = other.target_; - type_ = other.type_; + type_ = other.type_; } -void Listener::listen (SCM ev) const { +void Listener::listen (SCM ev) const +{ (type_->listen_callback) (target_, ev); } SCM -Listener::mark_smob (SCM sm) +Listener::mark_smob () { - Listener *me = (Listener *) SCM_CELL_WORD_1 (sm); - if (me->type_) - (me->type_->mark_callback) (me->target_); + if (type_) + (type_->mark_callback) (target_); return SCM_EOL; } -int -Listener::print_smob (SCM, SCM p, scm_print_state*) -{ - scm_puts ("#", p); - return 1; -} - SCM Listener::equal_p (SCM a, SCM b) { - Listener *l1 = unsmob_listener (a); - Listener *l2 = unsmob_listener (b); + Listener *l1 = Listener::unsmob (a); + Listener *l2 = Listener::unsmob (b); return (*l1 == *l2) ? SCM_BOOL_T : SCM_BOOL_F; } -IMPLEMENT_SIMPLE_SMOBS (Listener); -IMPLEMENT_TYPE_P (Listener, "listener"); +const char Listener::type_p_name_[] = "ly:listener?";