+ virtual void announce_grob (Grob_info, Context *reroute_context = 0);
+ virtual void announce_end_grob (Grob_info, Context *reroute_context = 0);
+ Engraver_group *get_daddy_engraver () const;
+
+public:
+ using Translator::trampoline;
+ template <class T, void (T::*callback)(Grob_info)>
+ static SCM trampoline (SCM target, SCM grob, SCM source_engraver)
+ {
+ T *t = LY_ASSERT_SMOB (T, target, 1);
+ Grob *g = LY_ASSERT_SMOB (Grob, grob, 2);
+ Engraver *e = LY_ASSERT_SMOB (Engraver, source_engraver, 3);
+
+ (t->*callback) (Grob_info (e, g));
+ return SCM_UNSPECIFIED;
+ }