X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fdispatcher.hh;h=98a8626fd8f04f370c632209b053c40d77bb0953;hb=9e877e5aea3fb6cf6e7873d1e8797672cda450f5;hp=2be14d91777425f0080ccb6a73c29ce44ea01e42;hpb=bf090c279f6f8e0ebbffc72d7ee435172dfaddc8;p=lilypond.git diff --git a/lily/include/dispatcher.hh b/lily/include/dispatcher.hh index 2be14d9177..98a8626fd8 100644 --- a/lily/include/dispatcher.hh +++ b/lily/include/dispatcher.hh @@ -22,13 +22,14 @@ #include "listener.hh" #include "stream-event.hh" +#include "smobs.hh" class Dispatcher : public Smob { public: - static int print_smob (SCM, SCM, scm_print_state *); - static SCM mark_smob (SCM); - static const char type_p_name_[]; + int print_smob (SCM, scm_print_state *) const; + SCM mark_smob () const; + static const char * const type_p_name_; virtual ~Dispatcher (); private: /* Hash table. Each event-class maps to a list of listeners. */ @@ -37,17 +38,18 @@ private: (dist . priority) pair. */ SCM dispatchers_; SCM listen_classes_; - DECLARE_LISTENER (dispatch); + void dispatch (SCM); /* priority counter. Listeners with low priority receive events first. */ int priority_count_; - void internal_add_listener (Listener, SCM event_class, int priority); + void internal_add_listener (SCM callback, SCM event_class, int priority); public: Dispatcher (); void broadcast (Stream_event *ev); bool is_listened_class (SCM); SCM listened_types (); void add_listener (Listener, SCM event_class); + void add_listener (SCM callback, SCM event_class); void remove_listener (Listener, SCM event_class); void register_as_listener (Dispatcher *dist); void unregister_as_listener (Dispatcher *dist);