From 7c36dbb1834c7c68e4b94777241de3ea02971aca Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sun, 5 Jun 2016 21:10:00 +0200 Subject: [PATCH] Issue 4885/2: Let ADD_ACKNOWLEDGER state actual classes Declaring the correct containing classes for acknowledgers allows dropping a bunch of black magic. --- lily/auto-beam-engraver.cc | 11 +++++----- lily/beam-engraver.cc | 4 ++-- lily/include/gregorian-ligature-engraver.hh | 2 +- lily/include/ligature-engraver.hh | 6 +++--- lily/include/slur-proto-engraver.hh | 24 +++++++++++---------- lily/kievan-ligature-engraver.cc | 4 ++-- lily/mensural-ligature-engraver.cc | 4 ++-- lily/phrasing-slur-engraver.cc | 16 +++++++------- lily/slur-engraver.cc | 16 +++++++------- lily/vaticana-ligature-engraver.cc | 4 ++-- 10 files changed, 47 insertions(+), 44 deletions(-) diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 148ed44c77..9e4a1ac28c 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -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, diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index c9e9a12d49..277d1b0a0e 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -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, diff --git a/lily/include/gregorian-ligature-engraver.hh b/lily/include/gregorian-ligature-engraver.hh index a29b9d64e8..3fea29c26c 100644 --- a/lily/include/gregorian-ligature-engraver.hh +++ b/lily/include/gregorian-ligature-engraver.hh @@ -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 const &primitives); virtual void transform_heads (Spanner *ligature, diff --git a/lily/include/ligature-engraver.hh b/lily/include/ligature-engraver.hh index 726496e91f..1f8fd8b85f 100644 --- a/lily/include/ligature-engraver.hh +++ b/lily/include/ligature-engraver.hh @@ -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); diff --git a/lily/include/slur-proto-engraver.hh b/lily/include/slur-proto-engraver.hh index 22d773de41..97ed1a6637 100644 --- a/lily/include/slur-proto-engraver.hh +++ b/lily/include/slur-proto-engraver.hh @@ -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); diff --git a/lily/kievan-ligature-engraver.cc b/lily/kievan-ligature-engraver.cc index 8934800cdf..f5de30f9b9 100644 --- a/lily/kievan-ligature-engraver.cc +++ b/lily/kievan-ligature-engraver.cc @@ -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, diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc index b66a3ea381..adff282c1b 100644 --- a/lily/mensural-ligature-engraver.cc +++ b/lily/mensural-ligature-engraver.cc @@ -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, diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index a4e1214928..c53d242c8c 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -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, diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 1e7b6b3e1e..f8b0465885 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -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, diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc index 3d5e6dfa9c..ce3929d9f9 100644 --- a/lily/vaticana-ligature-engraver.cc +++ b/lily/vaticana-ligature-engraver.cc @@ -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, -- 2.39.2