From: David Kastrup Date: Fri, 17 Jun 2016 14:13:55 +0000 (+0200) Subject: Issue 4899/2: Revert "Issue 4885/3: Remove ack_finder/ack_find_base" X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=60ceca32eb997a6ce3a974527b39a098d1ebb82e;p=lilypond.git Issue 4899/2: Revert "Issue 4885/3: Remove ack_finder/ack_find_base" This reverts commit b9040afd1dcfbee6b45bc3d54850ff50d51c8ee9. --- diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 928f6a969d..d0f6e8979c 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -58,6 +58,9 @@ public: (t->*callback) (Grob_info (e, g)); return SCM_UNSPECIFIED; } + template + static SCM ack_find_base () + { return Callback2_wrapper::make_smob > (); } /** Announce element. Default: pass on to daddy. Utility diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 0adc835c09..5197305ea2 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -38,7 +38,8 @@ /* end #define */ #define TRANSLATOR_INHERIT(BASE) \ - using BASE::method_finder + using BASE::method_finder; \ + using BASE::ack_finder; #define DECLARE_TRANSLATOR_CALLBACKS(NAME) \ template \ @@ -48,6 +49,8 @@ { \ return Callback_wrapper::make_smob > (); \ } \ + template \ + static SCM ack_finder () { return ack_find_base (); } \ /* end #define */ /* @@ -161,6 +164,15 @@ protected: // should be private. static SCM method_finder () { return SCM_UNDEFINED; } + // Overriden in Engraver. + template + static SCM + ack_find_base () { return SCM_UNDEFINED; } + + template + static SCM + ack_finder () { return SCM_UNDEFINED; } + virtual void derived_mark () const; static SCM event_class_symbol (const char *ev_class); SCM static_translator_description (const char *grobs, diff --git a/lily/include/translator.icc b/lily/include/translator.icc index cc2440279f..3d038b68e6 100644 --- a/lily/include/translator.icc +++ b/lily/include/translator.icc @@ -97,15 +97,14 @@ void add_acknowledger (SCM ptr, SCM &ack_hash); #define ADD_ACKNOWLEDGER(CLASS, NAME) \ - add_acknowledger (Callback2_wrapper::make_smob \ - > (), \ + add_acknowledger (ack_finder<&CLASS::acknowledge_ ## NAME> (), \ #NAME, acknowledge_static_array_drul_[START]) #define ADD_END_ACKNOWLEDGER(CLASS, NAME) \ - add_acknowledger (Callback2_wrapper::make_smob \ - > (), \ + add_acknowledger (ack_finder<&CLASS::acknowledge_end_ ## NAME> (), \ #NAME, acknowledge_static_array_drul_[STOP]) + /* Implement the method cl::listen_##m, and make it listen to stream events of class m.