]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4885/2: Let ADD_ACKNOWLEDGER state actual classes
authorDavid Kastrup <dak@gnu.org>
Sun, 5 Jun 2016 19:10:00 +0000 (21:10 +0200)
committerDavid Kastrup <dak@gnu.org>
Mon, 6 Jun 2016 08:59:54 +0000 (10:59 +0200)
Declaring the correct containing classes for acknowledgers
allows dropping a bunch of black magic.

lily/auto-beam-engraver.cc
lily/beam-engraver.cc
lily/include/gregorian-ligature-engraver.hh
lily/include/ligature-engraver.hh
lily/include/slur-proto-engraver.hh
lily/kievan-ligature-engraver.cc
lily/mensural-ligature-engraver.cc
lily/phrasing-slur-engraver.cc
lily/slur-engraver.cc
lily/vaticana-ligature-engraver.cc

index 148ed44c777a1ba71d1c18599fd11bb6758f8369..9e4a1ac28c645ae9914d8a13264b4f941c8ec9c3 100644 (file)
@@ -45,6 +45,7 @@ protected:
   virtual void finalize ();
   virtual void derived_mark () const;
 
+public:
   void acknowledge_rest (Grob_info);
   void acknowledge_beam (Grob_info);
   void acknowledge_bar_line (Grob_info);
@@ -646,11 +647,11 @@ void
 Grace_auto_beam_engraver::boot ()
 {
   ADD_LISTENER (Grace_auto_beam_engraver, beam_forbid);
-  ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, stem);
-  ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, bar_line);
-  ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, beam);
-  ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, breathing_sign);
-  ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, rest);
+  ADD_ACKNOWLEDGER (Auto_beam_engraver, stem);
+  ADD_ACKNOWLEDGER (Auto_beam_engraver, bar_line);
+  ADD_ACKNOWLEDGER (Auto_beam_engraver, beam);
+  ADD_ACKNOWLEDGER (Auto_beam_engraver, breathing_sign);
+  ADD_ACKNOWLEDGER (Auto_beam_engraver, rest);
 }
 
 ADD_TRANSLATOR (Grace_auto_beam_engraver,
index c9e9a12d497cc485dffe47b512066e36e03c7b18..277d1b0a0eae6a6de6dfcd9ff46f3a8ef9f26d22 100644 (file)
@@ -387,8 +387,8 @@ void
 Grace_beam_engraver::boot ()
 {
   ADD_LISTENER (Grace_beam_engraver, beam);
-  ADD_ACKNOWLEDGER (Grace_beam_engraver, stem);
-  ADD_ACKNOWLEDGER (Grace_beam_engraver, rest);
+  ADD_ACKNOWLEDGER (Beam_engraver, stem);
+  ADD_ACKNOWLEDGER (Beam_engraver, rest);
 }
 
 ADD_TRANSLATOR (Grace_beam_engraver,
index a29b9d64e86aae55dd5580015bcc03e7053a811c..3fea29c26cd4c558e8c62cb07c040f7e6391501d 100644 (file)
@@ -26,6 +26,7 @@ class Gregorian_ligature_engraver : public Coherent_ligature_engraver
   Stream_event *pes_or_flexa_req_;
 
 public:
+  void listen_pes_or_flexa (Stream_event *ev);
   // no TRANSLATOR_DECLARATIONS (Gregorian_ligature_engraver) needed
   // since this class is abstract
 
@@ -34,7 +35,6 @@ public:
 protected:
   Gregorian_ligature_engraver ();
 
-  virtual void listen_pes_or_flexa (Stream_event *ev);
   virtual void build_ligature (Spanner *ligature,
                                vector<Grob_info> const &primitives);
   virtual void transform_heads (Spanner *ligature,
index 726496e91fc208ff3b09a5616b0ac4fe48f7913c..1f8fd8b85f37d574160e4fcb0d99f4143c74e3f9 100644 (file)
@@ -30,9 +30,6 @@ protected:
   void stop_translation_timestep ();
   virtual void finalize ();
 
-  void acknowledge_rest (Grob_info);
-  void acknowledge_ligature_head (Grob_info);
-  virtual void listen_ligature (Stream_event *ev);
   void process_music ();
   virtual Spanner *create_ligature_spanner () = 0;
   virtual void typeset_ligature (Spanner *ligature,
@@ -41,6 +38,9 @@ protected:
   SCM brew_ligature_primitive_proc;
 
 public:
+  void acknowledge_rest (Grob_info);
+  void acknowledge_ligature_head (Grob_info);
+  void listen_ligature (Stream_event *ev);
   // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this
   // class is abstract
   DECLARE_TRANSLATOR_CALLBACKS (Ligature_engraver);
index 22d773de417ecbef9ce195180d1983a0ebd4b03d..97ed1a6637bbf78877020d18678a7169a988cde6 100644 (file)
@@ -54,17 +54,6 @@ protected:
   const char* event_name_;
   virtual SCM event_symbol () = 0;
 
-  void acknowledge_inline_accidental (Grob_info);
-  void acknowledge_fingering (Grob_info);
-  void acknowledge_note_column (Grob_info);
-  void acknowledge_script (Grob_info);
-  void acknowledge_dots (Grob_info);
-  void acknowledge_text_script (Grob_info);
-  void acknowledge_end_tie (Grob_info);
-  void acknowledge_tuplet_number (Grob_info);
-
-  void listen_note (Stream_event *ev);
-  void listen_slur (Stream_event *ev, Stream_event *note = 0);
   void acknowledge_extra_object (Grob_info);
   void stop_translation_timestep ();
   void process_music ();
@@ -78,6 +67,19 @@ protected:
   virtual void derived_mark () const;
 
 public:
+  void acknowledge_inline_accidental (Grob_info);
+  void acknowledge_fingering (Grob_info);
+  void acknowledge_note_column (Grob_info);
+  void acknowledge_script (Grob_info);
+  void acknowledge_dots (Grob_info);
+  void acknowledge_text_script (Grob_info);
+  void acknowledge_end_tie (Grob_info);
+  void acknowledge_tuplet_number (Grob_info);
+  void listen_note (Stream_event *ev);
+  void listen_slur (Stream_event *ev, Stream_event *note);
+  // You'd think the following is the same as defaulting `note' to 0,
+  // but template resolution for trampolines disagrees.  Huh.
+  void listen_slur (Stream_event *ev) { listen_slur (ev, 0); }
   // no TRANSLATOR_DECLARATIONS (Slur_proto_engraver) needed since this
   // class is abstract
   DECLARE_TRANSLATOR_CALLBACKS (Slur_proto_engraver);
index 8934800cdf9eec4d512f69255f4198b51a36bbb9..f5de30f9b95812a22576af246e3de2d993d53f8e 100644 (file)
@@ -140,8 +140,8 @@ void
 Kievan_ligature_engraver::boot ()
 {
   ADD_LISTENER (Kievan_ligature_engraver, ligature);
-  ADD_ACKNOWLEDGER (Kievan_ligature_engraver, rest);
-  ADD_ACKNOWLEDGER (Kievan_ligature_engraver, ligature_head);
+  ADD_ACKNOWLEDGER (Ligature_engraver, rest);
+  ADD_ACKNOWLEDGER (Ligature_engraver, ligature_head);
 }
 
 ADD_TRANSLATOR (Kievan_ligature_engraver,
index b66a3ea38163441054e28c30156e8db7633a25fb..adff282c1b9eb606ad025716e28785bb28214065 100644 (file)
@@ -500,8 +500,8 @@ void
 Mensural_ligature_engraver::boot ()
 {
   ADD_LISTENER (Mensural_ligature_engraver, ligature);
-  ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest);
-  ADD_ACKNOWLEDGER (Mensural_ligature_engraver, ligature_head);
+  ADD_ACKNOWLEDGER (Ligature_engraver, rest);
+  ADD_ACKNOWLEDGER (Ligature_engraver, ligature_head);
 }
 
 ADD_TRANSLATOR (Mensural_ligature_engraver,
index a4e1214928ccd9d913dcc99732adabd4ffb9d8de..c53d242c8c30b2dcfd3103050a393668f26f6d7e 100644 (file)
@@ -80,15 +80,15 @@ Phrasing_slur_engraver::boot ()
 {
   ADD_LISTENER (Phrasing_slur_engraver, phrasing_slur);
   ADD_LISTENER (Phrasing_slur_engraver, note);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, inline_accidental);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, inline_accidental);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, fingering)
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, note_column);
   ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, dots);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script);
-  ADD_END_ACKNOWLEDGER (Phrasing_slur_engraver, tie);
-  ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tuplet_number);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, script);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, dots);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, text_script);
+  ADD_END_ACKNOWLEDGER (Slur_proto_engraver, tie);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, tuplet_number);
 }
 
 ADD_TRANSLATOR (Phrasing_slur_engraver,
index 1e7b6b3e1efccbf020e780a5a2b27da514b02a01..f8b04658854a49c7f4ce39e1bf067bd5610a25f6 100644 (file)
@@ -80,14 +80,14 @@ Slur_engraver::boot ()
 {
   ADD_LISTENER (Slur_engraver, slur);
   ADD_LISTENER (Slur_engraver, note);
-  ADD_ACKNOWLEDGER (Slur_engraver, inline_accidental);
-  ADD_ACKNOWLEDGER (Slur_engraver, fingering);
-  ADD_ACKNOWLEDGER (Slur_engraver, note_column);
-  ADD_ACKNOWLEDGER (Slur_engraver, script);
-  ADD_ACKNOWLEDGER (Slur_engraver, text_script);
-  ADD_ACKNOWLEDGER (Slur_engraver, dots);
-  ADD_END_ACKNOWLEDGER (Slur_engraver, tie);
-  ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, inline_accidental);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, fingering);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, note_column);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, script);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, text_script);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, dots);
+  ADD_END_ACKNOWLEDGER (Slur_proto_engraver, tie);
+  ADD_ACKNOWLEDGER (Slur_proto_engraver, tuplet_number);
 }
 
 ADD_TRANSLATOR (Slur_engraver,
index 3d5e6dfa9c4d3a593a847260f4161f36e77f471e..ce3929d9f9f697a6689e906b258b305d946edb13 100644 (file)
@@ -744,8 +744,8 @@ Vaticana_ligature_engraver::boot ()
 {
   ADD_LISTENER (Vaticana_ligature_engraver, pes_or_flexa);
   ADD_LISTENER (Vaticana_ligature_engraver, ligature);
-  ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
-  ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
+  ADD_ACKNOWLEDGER (Ligature_engraver, rest);
+  ADD_ACKNOWLEDGER (Ligature_engraver, ligature_head);
 }
 
 ADD_TRANSLATOR (Vaticana_ligature_engraver,