]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4865/2: Rewrite of new translator initializations
authorDavid Kastrup <dak@gnu.org>
Sun, 29 May 2016 07:28:51 +0000 (09:28 +0200)
committerDavid Kastrup <dak@gnu.org>
Tue, 31 May 2016 09:14:18 +0000 (11:14 +0200)
This was done by running the following Bash script:

git grep '^ADD_TRANSLATOR (' lily|sed 's/^\([^:]*\):ADD_TRANSLATOR ( *\([a-zA-Z_]\+\),.*$/\1 \2/' |
    while read file translator
    do
lines="$(git grep -h '^\(ADD_ACKNOWLEDGER\|ADD_END_ACKNOWLEDGER\|IMPLEMENT_TRANSLATOR_LISTENER\) ('$translator, $file)"
sed -i "$(echo "$lines"|sed 's+^..*$+/&/d+')" $file
sed -i "/^ADD_TRANSLATOR ($translator,/i\\
void\\
$translator::boot ()\\
{\\
$(echo "$lines"|sed 's/IMPLEMENT_TRANSLATOR_LISTENER/ADD_LISTENER/;s/^./  &/;s/$/\\/')
}\\
" $file
    done

131 files changed:
lily/accidental-engraver.cc
lily/ambitus-engraver.cc
lily/arpeggio-engraver.cc
lily/auto-beam-engraver.cc
lily/axis-group-engraver.cc
lily/balloon-engraver.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/beam-collision-engraver.cc
lily/beam-engraver.cc
lily/beam-performer.cc
lily/bend-engraver.cc
lily/break-align-engraver.cc
lily/breathing-sign-engraver.cc
lily/chord-name-engraver.cc
lily/chord-tremolo-engraver.cc
lily/clef-engraver.cc
lily/cluster-engraver.cc
lily/collision-engraver.cc
lily/completion-note-heads-engraver.cc
lily/completion-rest-engraver.cc
lily/concurrent-hairpin-engraver.cc
lily/control-track-performer.cc
lily/cue-clef-engraver.cc
lily/custos-engraver.cc
lily/default-bar-line-engraver.cc
lily/dot-column-engraver.cc
lily/dots-engraver.cc
lily/double-percent-repeat-engraver.cc
lily/drum-note-engraver.cc
lily/drum-note-performer.cc
lily/dynamic-align-engraver.cc
lily/dynamic-engraver.cc
lily/dynamic-performer.cc
lily/episema-engraver.cc
lily/extender-engraver.cc
lily/figured-bass-engraver.cc
lily/figured-bass-position-engraver.cc
lily/fingering-column-engraver.cc
lily/fingering-engraver.cc
lily/font-size-engraver.cc
lily/footnote-engraver.cc
lily/forbid-break-engraver.cc
lily/fretboard-engraver.cc
lily/glissando-engraver.cc
lily/grace-engraver.cc
lily/grace-spacing-engraver.cc
lily/grid-line-span-engraver.cc
lily/grid-point-engraver.cc
lily/grob-pq-engraver.cc
lily/horizontal-bracket-engraver.cc
lily/hyphen-engraver.cc
lily/instrument-name-engraver.cc
lily/instrument-switch-engraver.cc
lily/keep-alive-together-engraver.cc
lily/key-engraver.cc
lily/key-performer.cc
lily/kievan-ligature-engraver.cc
lily/laissez-vibrer-engraver.cc
lily/ledger-line-engraver.cc
lily/ligature-bracket-engraver.cc
lily/lyric-engraver.cc
lily/lyric-performer.cc
lily/mark-engraver.cc
lily/measure-grouping-engraver.cc
lily/melody-engraver.cc
lily/mensural-ligature-engraver.cc
lily/metronome-engraver.cc
lily/midi-control-function-performer.cc
lily/multi-measure-rest-engraver.cc
lily/new-fingering-engraver.cc
lily/note-head-line-engraver.cc
lily/note-heads-engraver.cc
lily/note-name-engraver.cc
lily/note-performer.cc
lily/note-spacing-engraver.cc
lily/ottava-engraver.cc
lily/output-property-engraver.cc
lily/page-turn-engraver.cc
lily/paper-column-engraver.cc
lily/parenthesis-engraver.cc
lily/part-combine-engraver.cc
lily/percent-repeat-engraver.cc
lily/phrasing-slur-engraver.cc
lily/piano-pedal-align-engraver.cc
lily/piano-pedal-engraver.cc
lily/piano-pedal-performer.cc
lily/pitch-squash-engraver.cc
lily/pitched-trill-engraver.cc
lily/pure-from-neighbor-engraver.cc
lily/repeat-acknowledge-engraver.cc
lily/repeat-tie-engraver.cc
lily/rest-collision-engraver.cc
lily/rest-engraver.cc
lily/rhythmic-column-engraver.cc
lily/script-column-engraver.cc
lily/script-engraver.cc
lily/script-row-engraver.cc
lily/separating-line-group-engraver.cc
lily/slash-repeat-engraver.cc
lily/slur-engraver.cc
lily/slur-performer.cc
lily/spacing-engraver.cc
lily/span-arpeggio-engraver.cc
lily/span-bar-engraver.cc
lily/span-bar-stub-engraver.cc
lily/spanner-break-forbid-engraver.cc
lily/staff-collecting-engraver.cc
lily/staff-performer.cc
lily/staff-symbol-engraver.cc
lily/stanza-number-align-engraver.cc
lily/stanza-number-engraver.cc
lily/stem-engraver.cc
lily/system-start-delimiter-engraver.cc
lily/tab-note-heads-engraver.cc
lily/tab-staff-symbol-engraver.cc
lily/tab-tie-follow-engraver.cc
lily/tempo-performer.cc
lily/text-engraver.cc
lily/text-spanner-engraver.cc
lily/tie-engraver.cc
lily/tie-performer.cc
lily/time-signature-engraver.cc
lily/time-signature-performer.cc
lily/timing-translator.cc
lily/trill-spanner-engraver.cc
lily/tuplet-engraver.cc
lily/tweak-engraver.cc
lily/vaticana-ligature-engraver.cc
lily/vertical-align-engraver.cc
lily/volta-engraver.cc

index f9d2e15cd4c0e298f9c6a9fbcb3caea2a93fe172..1be735b0ed2dab1d7478370fb38d2daa59bf4be9 100644 (file)
@@ -511,11 +511,16 @@ Accidental_engraver::process_music ()
     update_local_key_signature (sig);
 }
 
-ADD_ACKNOWLEDGER (Accidental_engraver, arpeggio);
-ADD_ACKNOWLEDGER (Accidental_engraver, finger);
-ADD_ACKNOWLEDGER (Accidental_engraver, rhythmic_head);
-ADD_END_ACKNOWLEDGER (Accidental_engraver, tie);
-ADD_ACKNOWLEDGER (Accidental_engraver, note_column);
+
+void
+Accidental_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Accidental_engraver, arpeggio);
+  ADD_ACKNOWLEDGER (Accidental_engraver, finger);
+  ADD_ACKNOWLEDGER (Accidental_engraver, rhythmic_head);
+  ADD_END_ACKNOWLEDGER (Accidental_engraver, tie);
+  ADD_ACKNOWLEDGER (Accidental_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Accidental_engraver,
                 /* doc */
index 9ceea9387c59eb09a380fd23ebeaf4b84d9601c9..c2761c11a9a1438f750c3023d05adfa28da3fd16 100644 (file)
@@ -218,7 +218,12 @@ Ambitus_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Ambitus_engraver, note_head);
+void
+Ambitus_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Ambitus_engraver, note_head);
+}
+
 ADD_TRANSLATOR (Ambitus_engraver,
                 /* doc */
                 "Create an ambitus.",
index e191470161d99070b8f03597168b82e2b3eadcb2..44eb2580a395e30437dabe10c380e3ff6590ba76 100644 (file)
@@ -55,7 +55,6 @@ Arpeggio_engraver::Arpeggio_engraver ()
   arpeggio_event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Arpeggio_engraver, arpeggio);
 void Arpeggio_engraver::listen_arpeggio (Stream_event *ev)
 {
   ASSIGN_EVENT_ONCE (arpeggio_event_, ev);
@@ -109,9 +108,15 @@ Arpeggio_engraver::stop_translation_timestep ()
   arpeggio_event_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Arpeggio_engraver, stem);
-ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Arpeggio_engraver, note_column);
+
+void
+Arpeggio_engraver::boot ()
+{
+  ADD_LISTENER (Arpeggio_engraver, arpeggio);
+  ADD_ACKNOWLEDGER (Arpeggio_engraver, stem);
+  ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (Arpeggio_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Arpeggio_engraver,
                 /* doc */
index 68c61d97a8f011dd9d2ae7152a6b59c619671857..a68e1b9f06ee399d1e540d665669639be4edcbde 100644 (file)
@@ -160,7 +160,6 @@ Auto_beam_engraver::Auto_beam_engraver ()
   beam_settings_ = SCM_EOL;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Auto_beam_engraver, beam_forbid);
 void
 Auto_beam_engraver::listen_beam_forbid (Stream_event *ev)
 {
@@ -541,11 +540,17 @@ Auto_beam_engraver::process_acknowledged ()
   process_acknowledged_count_++;
 }
 
-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);
+void
+Auto_beam_engraver::boot ()
+{
+  ADD_LISTENER (Auto_beam_engraver, beam_forbid);
+  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 (Auto_beam_engraver,
                 /* doc */
                 "Generate beams based on measure characteristics and observed"
@@ -592,7 +597,6 @@ Grace_auto_beam_engraver::Grace_auto_beam_engraver ()
   // not considered.
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Grace_auto_beam_engraver, beam_forbid);
 void
 Grace_auto_beam_engraver::listen_beam_forbid (Stream_event *ev)
 {
@@ -638,11 +642,17 @@ Grace_auto_beam_engraver::test_moment (Direction dir, Moment test_mom, Moment)
   return !test_mom.grace_part_;
 }
 
-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);
+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_TRANSLATOR (Grace_auto_beam_engraver,
                 /* doc */
                 "Generates one autobeam group across an entire grace phrase. "
index 3a9b0d67752d58fcaa5d52886426c73e65659e97..49350d01cf27fe8d85d7121656dc1065801e6509 100644 (file)
@@ -165,7 +165,12 @@ Axis_group_engraver::add_element (Grob *e)
   Axis_group_interface::add_element (staffline_, e);
 }
 
-ADD_ACKNOWLEDGER (Axis_group_engraver, grob);
+
+void
+Axis_group_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Axis_group_engraver, grob);
+}
 
 ADD_TRANSLATOR (Axis_group_engraver,
                 /* doc */
index 980aa9223154ff967c4c7157349c25204b36577a..5155d985187593f6edffa4a9f88b3df021c5d063 100644 (file)
@@ -37,7 +37,6 @@ class Balloon_engraver : public Engraver
   void balloonify (Grob *, Stream_event *);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Balloon_engraver, annotate_output);
 void
 Balloon_engraver::listen_annotate_output (Stream_event *ev)
 {
@@ -85,7 +84,13 @@ Balloon_engraver::acknowledge_grob (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Balloon_engraver, grob);
+
+void
+Balloon_engraver::boot ()
+{
+  ADD_LISTENER (Balloon_engraver, annotate_output);
+  ADD_ACKNOWLEDGER (Balloon_engraver, grob);
+}
 
 ADD_TRANSLATOR (Balloon_engraver,
                 /* doc */
index 397743b4b07b87d8fd4cf49f1384d49aa8ce15e4..97972d046cf50fe3ec2b117782da25ec74b9b100 100644 (file)
@@ -108,7 +108,12 @@ Bar_engraver::acknowledge_end_spanner (Grob_info gi)
     spanners_.push_back (dynamic_cast<Spanner *> (g));
 }
 
-ADD_END_ACKNOWLEDGER (Bar_engraver, spanner);
+
+void
+Bar_engraver::boot ()
+{
+  ADD_END_ACKNOWLEDGER (Bar_engraver, spanner);
+}
 
 ADD_TRANSLATOR (Bar_engraver,
                 /* doc */
index 144076439c6e27fb787a6d50251cf3c2e7ea7ab0..75c192f28459ce6ea7500ba78f0ec5ff7b21e2aa 100644 (file)
@@ -52,7 +52,6 @@ protected:
   TRANSLATOR_DECLARATIONS (Bar_number_engraver);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Bar_number_engraver, alternative);
 void
 Bar_number_engraver::listen_alternative (Stream_event *ev)
 {
@@ -177,7 +176,13 @@ Bar_number_engraver::create_items ()
   text_ = make_item ("BarNumber", SCM_EOL);
 }
 
-ADD_ACKNOWLEDGER (Bar_number_engraver, break_alignment);
+
+void
+Bar_number_engraver::boot ()
+{
+  ADD_LISTENER (Bar_number_engraver, alternative);
+  ADD_ACKNOWLEDGER (Bar_number_engraver, break_alignment);
+}
 
 ADD_TRANSLATOR (Bar_number_engraver,
                 /* doc */
index 151ffacf16eab597378664eeb3d84a74f7ce5229..0ca0e0cf65c8e9804bb50f0b08bd3caf0eca037b 100644 (file)
@@ -193,15 +193,20 @@ Beam_collision_engraver::acknowledge_beam (Grob_info i)
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Beam_collision_engraver, note_head);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, stem);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, clef);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, key_signature);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, time_signature);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, clef_modifier);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, flag);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, beam);
+
+void
+Beam_collision_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, note_head);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, stem);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, clef);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, key_signature);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, time_signature);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, clef_modifier);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, flag);
+  ADD_ACKNOWLEDGER (Beam_collision_engraver, beam);
+}
 
 ADD_TRANSLATOR (Beam_collision_engraver,
                 /* doc */
index 554aeda7a1858694432b226c47efe3f9313c75fd..019d68db48a66ea1c30479bd373e979867f0f663 100644 (file)
@@ -112,7 +112,6 @@ Beam_engraver::Beam_engraver ()
   prev_start_ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Beam_engraver, beam);
 void
 Beam_engraver::listen_beam (Stream_event *ev)
 {
@@ -312,8 +311,14 @@ Beam_engraver::acknowledge_stem (Grob_info info)
   Beam::add_stem (beam_, stem);
 }
 
-ADD_ACKNOWLEDGER (Beam_engraver, stem);
-ADD_ACKNOWLEDGER (Beam_engraver, rest);
+
+void
+Beam_engraver::boot ()
+{
+  ADD_LISTENER (Beam_engraver, beam);
+  ADD_ACKNOWLEDGER (Beam_engraver, stem);
+  ADD_ACKNOWLEDGER (Beam_engraver, rest);
+}
 
 ADD_TRANSLATOR (Beam_engraver,
                 /* doc */
@@ -366,7 +371,6 @@ Grace_beam_engraver::valid_end_point ()
 /*
   Ugh, C&P code.
  */
-IMPLEMENT_TRANSLATOR_LISTENER (Grace_beam_engraver, beam);
 void
 Grace_beam_engraver::listen_beam (Stream_event *ev)
 {
@@ -378,8 +382,14 @@ Grace_beam_engraver::listen_beam (Stream_event *ev)
     stop_ev_ = ev;
 }
 
-ADD_ACKNOWLEDGER (Grace_beam_engraver, stem);
-ADD_ACKNOWLEDGER (Grace_beam_engraver, rest);
+
+void
+Grace_beam_engraver::boot ()
+{
+  ADD_LISTENER (Grace_beam_engraver, beam);
+  ADD_ACKNOWLEDGER (Grace_beam_engraver, stem);
+  ADD_ACKNOWLEDGER (Grace_beam_engraver, rest);
+}
 
 ADD_TRANSLATOR (Grace_beam_engraver,
                 /* doc */
index a6e78d67c7f2353515b263f749f6ece4951c9d2a..0d658dd6b8ea75554370f934a3eff091a121fd37 100644 (file)
@@ -80,7 +80,6 @@ Beam_performer::start_translation_timestep ()
   now_stop_ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Beam_performer, beam);
 void
 Beam_performer::listen_beam (Stream_event *ev)
 {
@@ -92,6 +91,12 @@ Beam_performer::listen_beam (Stream_event *ev)
     now_stop_ev_ = ev;
 }
 
+void
+Beam_performer::boot ()
+{
+  ADD_LISTENER (Beam_performer, beam);
+}
+
 ADD_TRANSLATOR (Beam_performer,
                 /* doc */
                 "",
index 44b0f21eaaa6820b96d7fc24e274db9c107b82f6..87d13c68ec8d8810d798463a6016a83ca028e007 100644 (file)
@@ -115,7 +115,6 @@ Bend_engraver::Bend_engraver ()
   fall_event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Bend_engraver, bend_after);
 void
 Bend_engraver::listen_bend_after (Stream_event *ev)
 {
@@ -133,7 +132,13 @@ Bend_engraver::process_music ()
     }
 }
 
-ADD_ACKNOWLEDGER (Bend_engraver, note_head);
+
+void
+Bend_engraver::boot ()
+{
+  ADD_LISTENER (Bend_engraver, bend_after);
+  ADD_ACKNOWLEDGER (Bend_engraver, note_head);
+}
 
 ADD_TRANSLATOR (Bend_engraver,
                 /* doc */
index f9090c8e0829718e61a594437d185ac3e235d771..52e4eda0c576c7093360e7a7a16bd0660a55eeb8 100644 (file)
@@ -155,8 +155,13 @@ Break_align_engraver::add_to_group (SCM align_name, Item *item)
   Axis_group_interface::add_element (group, item);
 }
 
-ADD_ACKNOWLEDGER (Break_align_engraver, break_aligned);
-ADD_ACKNOWLEDGER (Break_align_engraver, break_alignable);
+void
+Break_align_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Break_align_engraver, break_aligned);
+  ADD_ACKNOWLEDGER (Break_align_engraver, break_alignable);
+}
+
 ADD_TRANSLATOR (Break_align_engraver,
                 /* doc */
                 "Align grobs with corresponding @code{break-align-symbols}"
index 34b296d10b248028416c87286138c4073c6583af..0ee8cabe77b91659c879efca5f918f31b4241515 100644 (file)
@@ -51,7 +51,6 @@ Breathing_sign_engraver::Breathing_sign_engraver ()
   breathing_sign_event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Breathing_sign_engraver, breathing);
 void
 Breathing_sign_engraver::listen_breathing (Stream_event *ev)
 {
@@ -74,6 +73,12 @@ Breathing_sign_engraver::stop_translation_timestep ()
   breathing_sign_event_ = 0;
 }
 
+void
+Breathing_sign_engraver::boot ()
+{
+  ADD_LISTENER (Breathing_sign_engraver, breathing);
+}
+
 ADD_TRANSLATOR (Breathing_sign_engraver,
                 /* doc */
                 "Create a breathing sign.",
index db8493e2a5a6648478caf455e780dc104d15c65f..2f4def811613aa05432dbf349b1550ab4189ea69 100644 (file)
@@ -143,14 +143,12 @@ Chord_name_engraver::process_music ()
   context ()->set_property ("lastChord", markup);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, note);
 void
 Chord_name_engraver::listen_note (Stream_event *ev)
 {
   notes_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, rest);
 void
 Chord_name_engraver::listen_rest (Stream_event *ev)
 {
@@ -168,6 +166,13 @@ Chord_name_engraver::stop_translation_timestep ()
   The READs description is not strictly accurate:
   which properties are read depend on the chord naming function active.
 */
+void
+Chord_name_engraver::boot ()
+{
+  ADD_LISTENER (Chord_name_engraver, note);
+  ADD_LISTENER (Chord_name_engraver, rest);
+}
+
 ADD_TRANSLATOR (Chord_name_engraver,
                 /* doc */
                 "Catch note and rest events and generate the appropriate chordname.",
index 3855c350d73e8e15b7e0faaa37d008ed902b0d6a..9e704a222a926f54a5dfcc26a11ded67b2a6b04c 100644 (file)
@@ -73,7 +73,6 @@ Chord_tremolo_engraver::Chord_tremolo_engraver ()
   previous_stem_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Chord_tremolo_engraver, tremolo_span);
 void
 Chord_tremolo_engraver::listen_tremolo_span (Stream_event *ev)
 {
@@ -158,7 +157,13 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Chord_tremolo_engraver, stem);
+void
+Chord_tremolo_engraver::boot ()
+{
+  ADD_LISTENER (Chord_tremolo_engraver, tremolo_span);
+  ADD_ACKNOWLEDGER (Chord_tremolo_engraver, stem);
+}
+
 ADD_TRANSLATOR (Chord_tremolo_engraver,
                 /* doc */
                 "Generate beams for tremolo repeats.",
index 940a18d2010849e27ecf73b66f99361aa6a3260c..75adb6e3ee125f668b51af7b05eea145b584645e 100644 (file)
@@ -203,7 +203,12 @@ Clef_engraver::stop_translation_timestep ()
     }
 }
 
-ADD_ACKNOWLEDGER (Clef_engraver, bar_line);
+void
+Clef_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Clef_engraver, bar_line);
+}
+
 ADD_TRANSLATOR (Clef_engraver,
                 /* doc */
                 "Determine and set reference point for pitches.",
index bb5ed0dc54da0b6f79b430afb227b2bb35682ab7..eac15a76909c36769a6413ce10c53f4c1d2202cd 100644 (file)
@@ -81,7 +81,6 @@ Cluster_spanner_engraver::typeset_grobs ()
   beacon_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Cluster_spanner_engraver, cluster_note);
 void
 Cluster_spanner_engraver::listen_cluster_note (Stream_event *ev)
 {
@@ -142,7 +141,13 @@ Cluster_spanner_engraver::acknowledge_note_column (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Cluster_spanner_engraver, note_column);
+void
+Cluster_spanner_engraver::boot ()
+{
+  ADD_LISTENER (Cluster_spanner_engraver, cluster_note);
+  ADD_ACKNOWLEDGER (Cluster_spanner_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Cluster_spanner_engraver,
                 /* doc */
                 "Engrave a cluster using @code{Spanner} notation.",
index d1eb2dd3c0a4b49bc29a7f4553468c43b677420c..034726def9b2437176e124b99be0ad23aca3deac 100644 (file)
@@ -78,7 +78,12 @@ Collision_engraver::Collision_engraver ()
   col_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Collision_engraver, note_column);
+
+void
+Collision_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Collision_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Collision_engraver,
                 /* doc */
index 34a985d32da3cd1b16f2dda5e7bb2ff5a93fd5b2..e7a5dbc5606d5966f5bacd70da2c3016b6daac83 100644 (file)
@@ -89,7 +89,6 @@ Completion_heads_engraver::initialize ()
   is_first_ = false;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Completion_heads_engraver, note);
 void
 Completion_heads_engraver::listen_note (Stream_event *ev)
 {
@@ -307,6 +306,12 @@ Completion_heads_engraver::Completion_heads_engraver ()
   tie_column_ = 0;
 }
 
+void
+Completion_heads_engraver::boot ()
+{
+  ADD_LISTENER (Completion_heads_engraver, note);
+}
+
 ADD_TRANSLATOR (Completion_heads_engraver,
                 /* doc */
                 "This engraver replaces @code{Note_heads_engraver}.  It plays"
index 8f809fde7021f9cd7cc9a175602ef6cbc1435b61..2f9dc5603065db94f274d18c7cbf87ad34018735 100644 (file)
@@ -85,7 +85,6 @@ Completion_rest_engraver::initialize ()
   is_first_ = false;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Completion_rest_engraver, rest);
 void
 Completion_rest_engraver::listen_rest (Stream_event *ev)
 {
@@ -258,6 +257,12 @@ Completion_rest_engraver::Completion_rest_engraver ()
 {
 }
 
+void
+Completion_rest_engraver::boot ()
+{
+  ADD_LISTENER (Completion_rest_engraver, rest);
+}
+
 ADD_TRANSLATOR (Completion_rest_engraver,
                 /* doc */
                 "This engraver replaces @code{Rest_engraver}.  It plays"
index aa167b7de40a55120e4179d3d8c1a4ca05582bcd..0fb9a13d0fe1751fcd6b0e41003fe80cf5fc6ef4 100644 (file)
@@ -100,8 +100,13 @@ Concurrent_hairpin_engraver::finalize ()
   hairpins_hanging_out_.resize (0);
 }
 
-ADD_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin);
-ADD_END_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin);
+
+void
+Concurrent_hairpin_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin);
+  ADD_END_ACKNOWLEDGER (Concurrent_hairpin_engraver, hairpin);
+}
 
 ADD_TRANSLATOR (Concurrent_hairpin_engraver,
                 /* doc */
index 82beebe122fb002066f0fede1a4303c67fcbadd7..db6efe649ed5b3fa15c6155d51e8d8084e51b14f 100644 (file)
@@ -66,6 +66,12 @@ Control_track_performer::initialize ()
   add_text (Audio_text::TEXT, id_string);
 }
 
+void
+Control_track_performer::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Control_track_performer,
                 /* doc */
                 "",
index 383c9a1b1f7c33c2150a30c8e2e8fc6444d93408..771eea4b7900401481a6bc522707a28dc8905572 100644 (file)
@@ -209,7 +209,12 @@ Cue_clef_engraver::stop_translation_timestep ()
     }
 }
 
-ADD_ACKNOWLEDGER (Cue_clef_engraver, bar_line);
+void
+Cue_clef_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Cue_clef_engraver, bar_line);
+}
+
 ADD_TRANSLATOR (Cue_clef_engraver,
                 /* doc */
                 "Determine and set reference point for pitches in cued voices.",
index 5893dc205b731d84d6e8b3901d992b23bac4b6a9..517e53aece81a84df0437c238b8521d5ad38ecb2 100644 (file)
@@ -142,8 +142,13 @@ Custos_engraver::finalize ()
   custodes_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Custos_engraver, bar);
-ADD_ACKNOWLEDGER (Custos_engraver, note_head);
+
+void
+Custos_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Custos_engraver, bar);
+  ADD_ACKNOWLEDGER (Custos_engraver, note_head);
+}
 
 ADD_TRANSLATOR (Custos_engraver,
                 /* doc */
index 4eeb23036774feb4373e67bdad6e5577918678ba..a8b9898276c518ea263b3663e67d1df37b7bcdc5 100644 (file)
@@ -37,6 +37,12 @@ public:
 
 #include "translator.icc"
 
+void
+Default_bar_line_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Default_bar_line_engraver,
                 /* doc */
                 "This engraver determines what kind of automatic bar lines"
index c646ed038cde099d9169ff488e34e125c5a48081..a300b6f3a1ad0829d0fad48846e208379eca35b5 100644 (file)
@@ -61,7 +61,12 @@ Dot_column_engraver::acknowledge_rhythmic_head (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Dot_column_engraver, rhythmic_head);
+void
+Dot_column_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Dot_column_engraver, rhythmic_head);
+}
+
 ADD_TRANSLATOR (Dot_column_engraver,
                 /* doc */
                 "Engrave dots on dotted notes shifted to the right of the"
index 5465f460f6077e61d46fa4de53ffadbfe90b9495..4bf379124dd6c0f707ca56d5e5e4408c600470e1 100644 (file)
@@ -56,7 +56,12 @@ Dots_engraver::acknowledge_rhythmic_head (Grob_info gi)
     }
 }
 
-ADD_ACKNOWLEDGER (Dots_engraver, rhythmic_head);
+
+void
+Dots_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Dots_engraver, rhythmic_head);
+}
 
 ADD_TRANSLATOR (Dots_engraver,
                 "Create @ref{Dots} objects for"
index d85648293ece82b38ed4f8a327ff8d2492783be1..f50f8f8108f55ce5fa2382bf8ef9cd5f79585aa7 100644 (file)
@@ -48,7 +48,6 @@ Double_percent_repeat_engraver::Double_percent_repeat_engraver ()
   percent_event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Double_percent_repeat_engraver, double_percent);
 void
 Double_percent_repeat_engraver::listen_double_percent (Stream_event *ev)
 {
@@ -95,6 +94,12 @@ Double_percent_repeat_engraver::process_music ()
     }
 }
 
+void
+Double_percent_repeat_engraver::boot ()
+{
+  ADD_LISTENER (Double_percent_repeat_engraver, double_percent);
+}
+
 ADD_TRANSLATOR (Double_percent_repeat_engraver,
                 /* doc */
                 "Make double measure repeats.",
index 09a58fa24b873722f89bddc8310cc41ed529f1ef..d78e2ba3d10ae017327cb41b14c50d46557fb81d 100644 (file)
@@ -53,7 +53,6 @@ Drum_notes_engraver::Drum_notes_engraver ()
 {
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Drum_notes_engraver, note);
 void
 Drum_notes_engraver::listen_note (Stream_event *ev)
 {
@@ -140,8 +139,14 @@ Drum_notes_engraver::stop_translation_timestep ()
   events_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Drum_notes_engraver, stem);
-ADD_ACKNOWLEDGER (Drum_notes_engraver, note_column);
+
+void
+Drum_notes_engraver::boot ()
+{
+  ADD_LISTENER (Drum_notes_engraver, note);
+  ADD_ACKNOWLEDGER (Drum_notes_engraver, stem);
+  ADD_ACKNOWLEDGER (Drum_notes_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Drum_notes_engraver,
                 /* doc */
index 0285de650478c880493963c576389112057058c5..88c1a61d05f5562ce4212e147bb02f37164f9546 100644 (file)
@@ -96,13 +96,18 @@ Drum_note_performer::stop_translation_timestep ()
   note_evs_.clear ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Drum_note_performer, note);
 void
 Drum_note_performer::listen_note (Stream_event *ev)
 {
   note_evs_.push_back (ev);
 }
 
+void
+Drum_note_performer::boot ()
+{
+  ADD_LISTENER (Drum_note_performer, note);
+}
+
 ADD_TRANSLATOR (Drum_note_performer,
                 /* doc */
                 "Play drum notes.",
index 0abb39a7f2614b5bd0ab79e488b2159e46890f14..29f35b4f6128014a4a683ba0c34177dc0f96625b 100644 (file)
@@ -64,11 +64,6 @@ Dynamic_align_engraver::Dynamic_align_engraver ()
   current_dynamic_spanner_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
-ADD_ACKNOWLEDGER (Dynamic_align_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Dynamic_align_engraver, stem);
-ADD_ACKNOWLEDGER (Dynamic_align_engraver, footnote_spanner);
-ADD_END_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
 
 void
 Dynamic_align_engraver::create_line_spanner (Grob *cause)
@@ -232,6 +227,16 @@ Dynamic_align_engraver::stop_translation_timestep ()
   support_.clear ();
 }
 
+void
+Dynamic_align_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
+  ADD_ACKNOWLEDGER (Dynamic_align_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (Dynamic_align_engraver, stem);
+  ADD_ACKNOWLEDGER (Dynamic_align_engraver, footnote_spanner);
+  ADD_END_ACKNOWLEDGER (Dynamic_align_engraver, dynamic);
+}
+
 ADD_TRANSLATOR (Dynamic_align_engraver,
                 /* doc */
                 "Align hairpins and dynamic texts on a horizontal line.",
index edfd35fcb5912652b08a46dd3548da3cc5866ac6..6df34baf675b4cb060cb7803374bdad97df0af08 100644 (file)
@@ -69,14 +69,12 @@ Dynamic_engraver::Dynamic_engraver ()
   end_new_spanner_ = false;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, absolute_dynamic);
 void
 Dynamic_engraver::listen_absolute_dynamic (Stream_event *ev)
 {
   ASSIGN_EVENT_ONCE (script_event_, ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, span_dynamic);
 void
 Dynamic_engraver::listen_span_dynamic (Stream_event *ev)
 {
@@ -85,7 +83,6 @@ Dynamic_engraver::listen_span_dynamic (Stream_event *ev)
   ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, break_span);
 void
 Dynamic_engraver::listen_break_span (Stream_event *event)
 {
@@ -278,7 +275,15 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info)
     finished_spanner_->set_bound (RIGHT, info.grob ());
 }
 
-ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
+void
+Dynamic_engraver::boot ()
+{
+  ADD_LISTENER (Dynamic_engraver, absolute_dynamic);
+  ADD_LISTENER (Dynamic_engraver, span_dynamic);
+  ADD_LISTENER (Dynamic_engraver, break_span);
+  ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Dynamic_engraver,
                 /* doc */
                 "Create hairpins, dynamic texts and dynamic text spanners.",
index 6a6f8b8cf9acefceb7235547568556133609388e..567184412e97a83008144613a9b02e459189ced5 100644 (file)
@@ -206,7 +206,6 @@ Dynamic_performer::stop_translation_timestep ()
     = span_events_[RIGHT] = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_performer, decrescendo);
 void
 Dynamic_performer::listen_decrescendo (Stream_event *r)
 {
@@ -215,7 +214,6 @@ Dynamic_performer::listen_decrescendo (Stream_event *r)
   grow_dir_[d] = SMALLER;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_performer, crescendo);
 void
 Dynamic_performer::listen_crescendo (Stream_event *r)
 {
@@ -224,7 +222,6 @@ Dynamic_performer::listen_crescendo (Stream_event *r)
   grow_dir_[d] = BIGGER;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_performer, absolute_dynamic);
 void
 Dynamic_performer::listen_absolute_dynamic (Stream_event *r)
 {
@@ -232,6 +229,14 @@ Dynamic_performer::listen_absolute_dynamic (Stream_event *r)
     script_event_ = r;
 }
 
+void
+Dynamic_performer::boot ()
+{
+  ADD_LISTENER (Dynamic_performer, decrescendo);
+  ADD_LISTENER (Dynamic_performer, crescendo);
+  ADD_LISTENER (Dynamic_performer, absolute_dynamic);
+}
+
 ADD_TRANSLATOR (Dynamic_performer,
                 /* doc */
                 "",
index a62ed3726f8bd9c2269e4c8f73148dba80528d0b..dbbda29130db6c0facd55d6bb3ead19fe72eb15f 100644 (file)
@@ -56,7 +56,6 @@ Episema_engraver::Episema_engraver ()
   event_drul_.set (0, 0);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Episema_engraver, episema);
 void
 Episema_engraver::listen_episema (Stream_event *ev)
 {
@@ -161,8 +160,14 @@ Episema_engraver::acknowledge_note_head (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Episema_engraver, note_column);
-ADD_ACKNOWLEDGER (Episema_engraver, note_head);
+
+void
+Episema_engraver::boot ()
+{
+  ADD_LISTENER (Episema_engraver, episema);
+  ADD_ACKNOWLEDGER (Episema_engraver, note_column);
+  ADD_ACKNOWLEDGER (Episema_engraver, note_head);
+}
 
 ADD_TRANSLATOR (Episema_engraver,
                 /* doc */
index 3f3ef3b3ff3941527362496a43e9f2a3f964274a..2d96c400b637df2b13104ad352f3fc09bbcb47c2 100644 (file)
@@ -60,7 +60,6 @@ Extender_engraver::Extender_engraver ()
   ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Extender_engraver, extender);
 void
 Extender_engraver::listen_extender (Stream_event *ev)
 {
@@ -73,7 +72,6 @@ Extender_engraver::listen_extender (Stream_event *ev)
   end before the associated voice (this prevents the right bound being extended
   to the next note-column if no lyric follows the extender)
 */
-IMPLEMENT_TRANSLATOR_LISTENER (Extender_engraver, completize_extender);
 void
 Extender_engraver::listen_completize_extender (Stream_event * /* ev */)
 {
@@ -180,7 +178,14 @@ Extender_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
+void
+Extender_engraver::boot ()
+{
+  ADD_LISTENER (Extender_engraver, extender);
+  ADD_LISTENER (Extender_engraver, completize_extender);
+  ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
+}
+
 ADD_TRANSLATOR (Extender_engraver,
                 /* doc */
                 "Create lyric extenders.",
index 2ed07e3e836fc410e2cddb846b332b9e2d3bab2a..e9bd19291ca89aeb9a436e36676b0d68b5ceffac 100644 (file)
@@ -180,14 +180,12 @@ Figured_bass_engraver::stop_translation_timestep ()
     clear_spanners ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest);
 void
 Figured_bass_engraver::listen_rest (Stream_event *)
 {
   have_rest_ = true;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, bass_figure);
 void
 Figured_bass_engraver::listen_bass_figure (Stream_event *ev)
 {
@@ -504,6 +502,13 @@ Figured_bass_engraver::add_brackets ()
     }
 }
 
+void
+Figured_bass_engraver::boot ()
+{
+  ADD_LISTENER (Figured_bass_engraver, rest);
+  ADD_LISTENER (Figured_bass_engraver, bass_figure);
+}
+
 ADD_TRANSLATOR (Figured_bass_engraver,
                 /* doc */
                 "Make figured bass numbers.",
index c1df4623e6271a610fc6bc8df3f373418c7e6e74..9dadfc58ce89b51552f3574e437ac321bdc840b8 100644 (file)
@@ -138,13 +138,18 @@ Figured_bass_position_engraver::acknowledge_bass_figure_alignment (Grob_info inf
   start_spanner ();
 }
 
-ADD_ACKNOWLEDGER (Figured_bass_position_engraver, note_column);
-ADD_ACKNOWLEDGER (Figured_bass_position_engraver, slur);
-ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, slur);
 
-ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, tie);
-ADD_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment);
-ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment);
+
+void
+Figured_bass_position_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Figured_bass_position_engraver, note_column);
+  ADD_ACKNOWLEDGER (Figured_bass_position_engraver, slur);
+  ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, slur);
+  ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, tie);
+  ADD_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment);
+  ADD_END_ACKNOWLEDGER (Figured_bass_position_engraver, bass_figure_alignment);
+}
 
 ADD_TRANSLATOR (Figured_bass_position_engraver,
                 /* doc */
index 1c5b904809809c81f09022b68638edab7c39637d..466d8e281cae023ab87c0a6edef3a61ae7d4834c 100644 (file)
@@ -101,7 +101,12 @@ Fingering_column_engraver::process_acknowledged ()
     }
 }
 
-ADD_ACKNOWLEDGER (Fingering_column_engraver, finger);
+void
+Fingering_column_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Fingering_column_engraver, finger);
+}
+
 ADD_TRANSLATOR (Fingering_column_engraver,
                 /* doc */
                 "Find potentially colliding scripts and put them into a"
index d5b4102d8bf844bd3ef8cbb28aa71a357bb673aa..4e5a6577fab7b8715919af7b72ca3d5eb1d0e872 100644 (file)
@@ -47,7 +47,6 @@ private:
   void make_script (Direction, Stream_event *, int);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Fingering_engraver, fingering);
 void
 Fingering_engraver::listen_fingering (Stream_event *ev)
 {
@@ -141,9 +140,15 @@ Fingering_engraver::Fingering_engraver ()
 {
 }
 
-ADD_ACKNOWLEDGER (Fingering_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Fingering_engraver, stem);
-ADD_ACKNOWLEDGER (Fingering_engraver, flag);
+
+void
+Fingering_engraver::boot ()
+{
+  ADD_LISTENER (Fingering_engraver, fingering);
+  ADD_ACKNOWLEDGER (Fingering_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (Fingering_engraver, stem);
+  ADD_ACKNOWLEDGER (Fingering_engraver, flag);
+}
 
 ADD_TRANSLATOR (Fingering_engraver,
                 /* doc */
index b9250358dd2197a48356529db9aa5db9954f9bdb..6618c6d4827bd183bef15faef14c80d753502463 100644 (file)
@@ -61,7 +61,12 @@ Font_size_engraver::acknowledge_font (Grob_info gi)
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Font_size_engraver, font);
+void
+Font_size_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Font_size_engraver, font);
+}
+
 ADD_TRANSLATOR (Font_size_engraver,
                 /* doc */
                 "Put @code{fontSize} into @code{font-size} grob property.",
index 636379125f73b36caf936bbddba4fc632244f0e8..857d08fcef4eff92102362a8aaff39fef62be93d 100644 (file)
@@ -114,8 +114,13 @@ Footnote_engraver::acknowledge_end_grob (Grob_info info)
       }
 }
 
-ADD_ACKNOWLEDGER (Footnote_engraver, grob);
-ADD_END_ACKNOWLEDGER (Footnote_engraver, grob);
+
+void
+Footnote_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Footnote_engraver, grob);
+  ADD_END_ACKNOWLEDGER (Footnote_engraver, grob);
+}
 
 ADD_TRANSLATOR (Footnote_engraver,
                 /* doc */
index db0e254739c3cc5d7cee1a1eecaa1ada39adcb68..9cfdef24c82566634160bc4d22ba655e2be1e9e2 100644 (file)
@@ -58,6 +58,12 @@ Forbid_line_break_engraver::start_translation_timestep ()
     }
 }
 
+void
+Forbid_line_break_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Forbid_line_break_engraver,
                 /* doc */
                 "Forbid line breaks when note heads are still playing at some"
index 2ce799bf0f94b4516b90086bcd0f194fe17196bf..239ee54eb67e6dc967cee814e8cd1641d8930f03 100644 (file)
@@ -68,21 +68,18 @@ Fretboard_engraver::Fretboard_engraver ()
   last_placements_ = SCM_BOOL_F;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Fretboard_engraver, note);
 void
 Fretboard_engraver::listen_note (Stream_event *ev)
 {
   note_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Fretboard_engraver, string_number);
 void
 Fretboard_engraver::listen_string_number (Stream_event *ev)
 {
   tabstring_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Fretboard_engraver, fingering);
 void
 Fretboard_engraver::listen_fingering (Stream_event *ev)
 {
@@ -128,6 +125,14 @@ Fretboard_engraver::stop_translation_timestep ()
   fingering_events_.clear ();
 }
 
+void
+Fretboard_engraver::boot ()
+{
+  ADD_LISTENER (Fretboard_engraver, note);
+  ADD_LISTENER (Fretboard_engraver, string_number);
+  ADD_LISTENER (Fretboard_engraver, fingering);
+}
+
 ADD_TRANSLATOR (Fretboard_engraver,
                 /* doc */
                 "Generate fret diagram from one or more events of type"
index c7744d1f4b2db3288cbbb252f12ccd0e4b9d4824..853ba8f27957027b2937f1e068c4c2b38b6bc25e 100644 (file)
@@ -60,7 +60,6 @@ Glissando_engraver::Glissando_engraver ()
   stop_glissandi_ = false;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Glissando_engraver, glissando);
 void
 Glissando_engraver::listen_glissando (Stream_event *ev)
 {
@@ -170,7 +169,13 @@ Glissando_engraver::finalize ()
     kill_me_[i]->suicide ();
 }
 
-ADD_ACKNOWLEDGER (Glissando_engraver, note_column);
+void
+Glissando_engraver::boot ()
+{
+  ADD_LISTENER (Glissando_engraver, glissando);
+  ADD_ACKNOWLEDGER (Glissando_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Glissando_engraver,
                 /* doc */
                 "Engrave glissandi.",
index 5279cab4c0fb2ed3fa7f2dd03bc4846a84d998a0..57ccb1e0fa4d18202fff38f18cc002a38b0f77f8 100644 (file)
@@ -157,6 +157,12 @@ Grace_engraver::derived_mark () const
   Engraver::derived_mark ();
 }
 
+void
+Grace_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Grace_engraver,
                 /* doc */
                 "Set font size and other properties for grace notes.",
index 5da9c90b5cc40b16f177261373e99c2096fdb0b3..445d2b0f81a7504c44df39d87efbeebd1b4be4ba 100644 (file)
@@ -77,6 +77,12 @@ Grace_spacing_engraver::stop_translation_timestep ()
     grace_spacing_ = 0;
 }
 
+void
+Grace_spacing_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Grace_spacing_engraver,
                 "Bookkeeping of shortest starting and playing notes in grace"
                 " note runs.",
index a61f61df789162cd495cca4b73e202a995784019..e27e502c072d32ab3d3f3c336f8acf332095f6f5 100644 (file)
@@ -70,7 +70,12 @@ Grid_line_span_engraver::stop_translation_timestep ()
   lines_.resize (0);
 }
 
-ADD_ACKNOWLEDGER (Grid_line_span_engraver, grid_point);
+void
+Grid_line_span_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Grid_line_span_engraver, grid_point);
+}
+
 ADD_TRANSLATOR (Grid_line_span_engraver,
                 /* doc */
                 "This engraver makes cross-staff lines: It catches all normal"
index f4361957874aadb5cd71e7f0d3b69776a11662a6..d67fb191b6463605ae35440913b6bd7d6deab823 100644 (file)
@@ -48,6 +48,12 @@ Grid_point_engraver::Grid_point_engraver ()
 {
 }
 
+void
+Grid_point_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Grid_point_engraver,
                 /* doc */
                 "Generate grid points.",
index 45b4ff2b359d7aca819c4ab074145eb9df430e4a..4c388c5145baead6ccea5c20d3503dea18a2fe70 100644 (file)
@@ -148,7 +148,12 @@ Grob_pq_engraver::start_translation_timestep ()
     context ()->set_property ("busyGrobs", busy);
 }
 
-ADD_ACKNOWLEDGER (Grob_pq_engraver, grob);
+void
+Grob_pq_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Grob_pq_engraver, grob);
+}
+
 ADD_TRANSLATOR (Grob_pq_engraver,
                 /* doc */
                 "Administrate when certain grobs (e.g., note heads) stop"
index cd46817904db5726a5ed2dee7026b4fd1a2649e6..2e7f2b629428cdba15aad0e34c075ddf4c3851ec 100644 (file)
@@ -49,7 +49,6 @@ Horizontal_bracket_engraver::Horizontal_bracket_engraver ()
   push_count_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Horizontal_bracket_engraver, note_grouping);
 void
 Horizontal_bracket_engraver::listen_note_grouping (Stream_event *ev)
 {
@@ -109,7 +108,13 @@ Horizontal_bracket_engraver::stop_translation_timestep ()
   events_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column);
+void
+Horizontal_bracket_engraver::boot ()
+{
+  ADD_LISTENER (Horizontal_bracket_engraver, note_grouping);
+  ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Horizontal_bracket_engraver,
                 /* doc */
                 "Create horizontal brackets over notes for musical analysis"
index be436655561f8421eac94c40d32c1b7950796839..ef1013b979fceff07726659f8c1587aa543b6718 100644 (file)
@@ -74,7 +74,6 @@ Hyphen_engraver::acknowledge_lyric_syllable (Grob_info i)
     finished_hyphen_->set_bound (RIGHT, item);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Hyphen_engraver, hyphen);
 void
 Hyphen_engraver::listen_hyphen (Stream_event *ev)
 {
@@ -155,7 +154,13 @@ Hyphen_engraver::stop_translation_timestep ()
   ev_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Hyphen_engraver, lyric_syllable);
+
+void
+Hyphen_engraver::boot ()
+{
+  ADD_LISTENER (Hyphen_engraver, hyphen);
+  ADD_ACKNOWLEDGER (Hyphen_engraver, lyric_syllable);
+}
 
 ADD_TRANSLATOR (Hyphen_engraver,
                 /* doc */
index d339fbce612e94c19638c33ed0da5c532b07f89b..a0263d930f6d03af5ffdaf91e5320a84e88fcf10 100644 (file)
@@ -173,7 +173,12 @@ Instrument_name_engraver::stop_spanner ()
   text_spanner_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group);
+
+void
+Instrument_name_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group);
+}
 
 ADD_TRANSLATOR (Instrument_name_engraver,
                 /* doc */
index 67a58c7e6fca4ebec53bc57ec8f61b409fa12769..59cbb4f13cd4102eee7d9cc00af1844f55eb70b1 100644 (file)
@@ -75,6 +75,12 @@ Instrument_switch_engraver::stop_translation_time_step ()
   text_ = 0;
 }
 
+void
+Instrument_switch_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Instrument_switch_engraver,
                 /* doc */
                 "Create a cue text for taking instrument.",
index 79fedc96df05e2976660b766605ae4d28271bad5..83699da5938f742a801c8e3f836c45cbaa90f48d 100644 (file)
@@ -88,7 +88,12 @@ Keep_alive_together_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Keep_alive_together_engraver, hara_kiri_group_spanner);
+
+void
+Keep_alive_together_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Keep_alive_together_engraver, hara_kiri_group_spanner);
+}
 
 ADD_TRANSLATOR (Keep_alive_together_engraver,
                 /* doc */
index 971f55317295e8a56387a6f508dc8a41f20cd96a..635f293120c4c3bac29327788536ffb0549f2965 100644 (file)
@@ -120,7 +120,6 @@ Key_engraver::create_key (bool is_default)
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Key_engraver, key_change);
 void
 Key_engraver::listen_key_change (Stream_event *ev)
 {
@@ -212,8 +211,14 @@ Key_engraver::initialize ()
   context ()->set_property ("tonic", p.smobbed_copy ());
 }
 
-ADD_ACKNOWLEDGER (Key_engraver, clef);
-ADD_ACKNOWLEDGER (Key_engraver, bar_line);
+
+void
+Key_engraver::boot ()
+{
+  ADD_LISTENER (Key_engraver, key_change);
+  ADD_ACKNOWLEDGER (Key_engraver, clef);
+  ADD_ACKNOWLEDGER (Key_engraver, bar_line);
+}
 
 ADD_TRANSLATOR (Key_engraver,
                 /* doc */
index 06666ac53257083095af1323b62df7ec531d0dfa..568357573de7626e90136e4a15731854883b2c94 100644 (file)
@@ -98,7 +98,6 @@ Key_performer::stop_translation_timestep ()
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Key_performer, key_change);
 void
 Key_performer::listen_key_change (Stream_event *ev)
 {
@@ -106,6 +105,12 @@ Key_performer::listen_key_change (Stream_event *ev)
     key_ev_ = ev;
 }
 
+void
+Key_performer::boot ()
+{
+  ADD_LISTENER (Key_performer, key_change);
+}
+
 ADD_TRANSLATOR (Key_performer,
                 /* doc */
                 "",
index 791f0b1f1c956abd53ed93c84259bb98bb0dd0de..42c48a551e035bef14fba51bf998b8e94d0155b1 100644 (file)
@@ -46,7 +46,6 @@ private:
   void fold_up_primitives (vector<Grob_info> const &primitives, Real padding, Real &min_length);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Kievan_ligature_engraver, ligature);
 void
 Kievan_ligature_engraver::listen_ligature (Stream_event *ev)
 {
@@ -136,8 +135,14 @@ Kievan_ligature_engraver::build_ligature (Spanner *ligature,
 
 }
 
-ADD_ACKNOWLEDGER (Kievan_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Kievan_ligature_engraver, ligature_head);
+
+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_TRANSLATOR (Kievan_ligature_engraver,
                 /* doc */
index 6e57a7e9df6b92e7cb7fec9b30daea722a460a75..11e379aeed1b13e03ba38b3afc9ff5c2eb7f20b1 100644 (file)
@@ -53,7 +53,6 @@ Laissez_vibrer_engraver::stop_translation_timestep ()
   lv_ties_.clear ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Laissez_vibrer_engraver, laissez_vibrer);
 void
 Laissez_vibrer_engraver::listen_laissez_vibrer (Stream_event *ev)
 {
@@ -104,7 +103,13 @@ Laissez_vibrer_engraver::acknowledge_note_head (Grob_info inf)
   lv_ties_.push_back (lv_tie);
 }
 
-ADD_ACKNOWLEDGER (Laissez_vibrer_engraver, note_head);
+void
+Laissez_vibrer_engraver::boot ()
+{
+  ADD_LISTENER (Laissez_vibrer_engraver, laissez_vibrer);
+  ADD_ACKNOWLEDGER (Laissez_vibrer_engraver, note_head);
+}
+
 ADD_TRANSLATOR (Laissez_vibrer_engraver,
                 /* doc */
                 "Create laissez vibrer items.",
index 8e871c1abf868c5ee53f34ffb82eaa5a4f2e6039..ba52d62f6711021e02159d868558387af7ebe9a6 100644 (file)
@@ -120,8 +120,13 @@ Ledger_line_engraver::acknowledge_ledgered (Grob_info s)
   ledgered_grobs_.push_back (s.grob ());
 }
 
-ADD_ACKNOWLEDGER (Ledger_line_engraver, ledgered);
-ADD_ACKNOWLEDGER (Ledger_line_engraver, staff_symbol);
+void
+Ledger_line_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Ledger_line_engraver, ledgered);
+  ADD_ACKNOWLEDGER (Ledger_line_engraver, staff_symbol);
+}
+
 ADD_TRANSLATOR (Ledger_line_engraver,
                 /* doc */
                 "Create the spanner to draw ledger lines, and notices"
index bc3d379c22e01c83197afb6d41d1e998b1c6a625..7c0a8d6e2f52aec96b625036e88ac96114486a87 100644 (file)
@@ -46,7 +46,6 @@ private:
   Stream_event *previous_start_event_;
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Ligature_bracket_engraver, ligature);
 void
 Ligature_bracket_engraver::listen_ligature (Stream_event *ev)
 {
@@ -116,8 +115,14 @@ Ligature_bracket_engraver::stop_translation_timestep ()
   finished_ligature_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Ligature_bracket_engraver, rest);
-ADD_ACKNOWLEDGER (Ligature_bracket_engraver, note_column);
+
+void
+Ligature_bracket_engraver::boot ()
+{
+  ADD_LISTENER (Ligature_bracket_engraver, ligature);
+  ADD_ACKNOWLEDGER (Ligature_bracket_engraver, rest);
+  ADD_ACKNOWLEDGER (Ligature_bracket_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Ligature_bracket_engraver,
                 /* doc */
index cdee61517e333f4c6a554c973b27c11555d8835c..f051cfcb0a1a479f62bd8b544e82e336a5208b6f 100644 (file)
@@ -56,7 +56,6 @@ Lyric_engraver::Lyric_engraver ()
   event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Lyric_engraver, lyric);
 void
 Lyric_engraver::listen_lyric (Stream_event *ev)
 {
@@ -194,6 +193,12 @@ Lyric_engraver::stop_translation_timestep ()
   event_ = 0;
 }
 
+void
+Lyric_engraver::boot ()
+{
+  ADD_LISTENER (Lyric_engraver, lyric);
+}
+
 ADD_TRANSLATOR (Lyric_engraver,
                 /* doc */
                 "Engrave text for lyrics.",
index 0ad69ae0536b2efa17d95663dc2f4e0c818704d7..1215cc7d5500808a247af52c09739d9a9d68eb8d 100644 (file)
@@ -67,13 +67,18 @@ Lyric_performer::stop_translation_timestep ()
   events_.clear ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Lyric_performer, lyric);
 void
 Lyric_performer::listen_lyric (Stream_event *event)
 {
   events_.push_back (event);
 }
 
+void
+Lyric_performer::boot ()
+{
+  ADD_LISTENER (Lyric_performer, lyric);
+}
+
 ADD_TRANSLATOR (Lyric_performer,
                 /* doc */
                 "",
index 7db0a781cc8d993807ac51af519218ef0b48d42d..76105f14dcbefe4a9c00ee71c8bb04c0a4e7a05a 100644 (file)
@@ -111,7 +111,6 @@ Mark_engraver::create_items (Stream_event *ev)
   text_ = make_item ("RehearsalMark", ev->self_scm ());
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Mark_engraver, mark);
 void
 Mark_engraver::listen_mark (Stream_event *ev)
 {
@@ -157,7 +156,13 @@ Mark_engraver::process_music ()
     }
 }
 
-ADD_ACKNOWLEDGER (Mark_engraver, break_alignment);
+
+void
+Mark_engraver::boot ()
+{
+  ADD_LISTENER (Mark_engraver, mark);
+  ADD_ACKNOWLEDGER (Mark_engraver, break_alignment);
+}
 
 ADD_TRANSLATOR (Mark_engraver,
                 /* doc */
index e7fc3c6726cb874513b016b23c874976bfa03bfb..71e06d174753f48f0f39bed98a85cb1cb2ad1517 100644 (file)
@@ -119,7 +119,12 @@ Measure_grouping_engraver::Measure_grouping_engraver ()
   grouping_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Measure_grouping_engraver, note_column);
+void
+Measure_grouping_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Measure_grouping_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Measure_grouping_engraver,
                 /* doc */
                 "Create @code{MeasureGrouping} to indicate beat subdivision.",
index 2d982056d33d22f438fdb30a800e081bf6f8150f..e7cf07292a83f297fbdf43355f93eda917d2d678 100644 (file)
@@ -93,8 +93,13 @@ Melody_engraver::acknowledge_stem (Grob_info info)
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Melody_engraver, stem);
-ADD_ACKNOWLEDGER (Melody_engraver, slur);
+
+void
+Melody_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Melody_engraver, stem);
+  ADD_ACKNOWLEDGER (Melody_engraver, slur);
+}
 
 ADD_TRANSLATOR (Melody_engraver,
                 /* doc */
index bfa30550e58efd99ff0605572d0f0f0db22101fd..b6a83f7d3efc471c0cb9163344a8467c7affd40d 100644 (file)
@@ -74,7 +74,6 @@ private:
                            Real &min_length);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Mensural_ligature_engraver, ligature);
 void
 Mensural_ligature_engraver::listen_ligature (Stream_event *ev)
 {
@@ -496,8 +495,14 @@ Mensural_ligature_engraver::build_ligature (Spanner *ligature,
     ligature->set_property ("minimum-length", scm_from_double (min_length));
 }
 
-ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Mensural_ligature_engraver, ligature_head);
+
+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_TRANSLATOR (Mensural_ligature_engraver,
                 /* doc */
index e1de3e23e0f48692e536060357856741152f65ee..21aab95ee22adfb5a19cc90f435cf00983a93e42 100644 (file)
@@ -61,7 +61,6 @@ Metronome_mark_engraver::Metronome_mark_engraver ()
   tempo_ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Metronome_mark_engraver, tempo_change);
 void
 Metronome_mark_engraver::listen_tempo_change (Stream_event *ev)
 {
@@ -168,9 +167,15 @@ Metronome_mark_engraver::process_music ()
     }
 }
 
-ADD_ACKNOWLEDGER (Metronome_mark_engraver, break_aligned);
-ADD_ACKNOWLEDGER (Metronome_mark_engraver, break_alignment);
-ADD_ACKNOWLEDGER (Metronome_mark_engraver, grob);
+
+void
+Metronome_mark_engraver::boot ()
+{
+  ADD_LISTENER (Metronome_mark_engraver, tempo_change);
+  ADD_ACKNOWLEDGER (Metronome_mark_engraver, break_aligned);
+  ADD_ACKNOWLEDGER (Metronome_mark_engraver, break_alignment);
+  ADD_ACKNOWLEDGER (Metronome_mark_engraver, grob);
+}
 
 ADD_TRANSLATOR (Metronome_mark_engraver,
                 /* doc */
index 90ea063f736d1c3af3a884ba7cc5858506d1ff7e..a112e6bceffb7daaaf54d9340a265dab20dbbb87 100644 (file)
@@ -113,6 +113,12 @@ Midi_control_function_performer::announce_function_value_change (SCM sev)
     }
 }
 
+void
+Midi_control_function_performer::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Midi_control_function_performer,
                 /* doc */
                 "",
index 274746b84597d35ab272cd8048dbb6e0c37b3be4..aa4a54b9e733496a2b8d0173f49b4dd8aa0218f6 100644 (file)
@@ -74,7 +74,6 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 {
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Multi_measure_rest_engraver, multi_measure_rest);
 void
 Multi_measure_rest_engraver::listen_multi_measure_rest (Stream_event *ev)
 {
@@ -91,7 +90,6 @@ Multi_measure_rest_engraver::listen_multi_measure_rest (Stream_event *ev)
   clear_lapsed_events (now);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Multi_measure_rest_engraver, multi_measure_text);
 void
 Multi_measure_rest_engraver::listen_multi_measure_text (Stream_event *ev)
 {
@@ -245,6 +243,13 @@ Multi_measure_rest_engraver::start_translation_timestep ()
   clear_lapsed_events (now_mom ());
 }
 
+void
+Multi_measure_rest_engraver::boot ()
+{
+  ADD_LISTENER (Multi_measure_rest_engraver, multi_measure_rest);
+  ADD_LISTENER (Multi_measure_rest_engraver, multi_measure_text);
+}
+
 ADD_TRANSLATOR (Multi_measure_rest_engraver,
                 /* doc */
                 "Engrave multi-measure rests that are produced with"
index 3ecad3a89e3d10cefca9de2fd65ffe161ee3842e..abf9ce5a6b7d715b978cd17ac19f06831621fa6d 100644 (file)
@@ -371,9 +371,14 @@ New_fingering_engraver::New_fingering_engraver ()
   stem_ = 0;
 }
 
-ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (New_fingering_engraver, inline_accidental);
-ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
+
+void
+New_fingering_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (New_fingering_engraver, inline_accidental);
+  ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
+}
 
 ADD_TRANSLATOR (New_fingering_engraver,
                 /* doc */
index 4b21bb27673a5bf62fee58851947c79e3ebe5024..f71c8bdbe1eb7e7b0647a4a559a4ef1860d08bf1 100644 (file)
@@ -106,7 +106,12 @@ Note_head_line_engraver::stop_translation_timestep ()
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head);
+void
+Note_head_line_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head);
+}
+
 ADD_TRANSLATOR (Note_head_line_engraver,
                 /* doc */
                 "Engrave a line between two note heads in a staff"
index 6322dfa2b9f7ed72b5a8bdfd9af6109fa62fa9b5..244e25cedc7f1a87c4261e6011b0d2c49b374ed7 100644 (file)
@@ -50,7 +50,6 @@ Note_heads_engraver::Note_heads_engraver ()
 {
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Note_heads_engraver, note);
 void
 Note_heads_engraver::listen_note (Stream_event *ev)
 {
@@ -121,6 +120,12 @@ Note_heads_engraver::stop_translation_timestep ()
   note_evs_.clear ();
 }
 
+void
+Note_heads_engraver::boot ()
+{
+  ADD_LISTENER (Note_heads_engraver, note);
+}
+
 ADD_TRANSLATOR (Note_heads_engraver,
                 /* doc */
                 "Generate note heads.",
index 3ae9840e0d4090e2e30c6287bda48d5f982008d1..d4494a7cb7f7eae9374128bfc372764b9b34495c 100644 (file)
@@ -35,7 +35,6 @@ public:
   void stop_translation_timestep ();
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Note_name_engraver, note);
 void
 Note_name_engraver::listen_note (Stream_event *ev)
 {
@@ -74,6 +73,12 @@ Note_name_engraver::Note_name_engraver ()
 {
 }
 
+void
+Note_name_engraver::boot ()
+{
+  ADD_LISTENER (Note_name_engraver, note);
+}
+
 ADD_TRANSLATOR (Note_name_engraver,
                 /* doc */
                 "Print pitches as words.",
index aa46440006c21140b3f12828b3e97c5ef6ba2ae0..6e1295fd088a4482bb080f9bab42af72f7ed264f 100644 (file)
@@ -126,14 +126,12 @@ Note_performer::stop_translation_timestep ()
   note_evs_.clear ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Note_performer, note)
 void
 Note_performer::listen_note (Stream_event *ev)
 {
   note_evs_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Note_performer, breathing)
 void
 Note_performer::listen_breathing (Stream_event *ev)
 {
@@ -157,6 +155,13 @@ Note_performer::listen_breathing (Stream_event *ev)
       }
 }
 
+void
+Note_performer::boot ()
+{
+  ADD_LISTENER (Note_performer, note)
+  ADD_LISTENER (Note_performer, breathing)
+}
+
 ADD_TRANSLATOR (Note_performer,
                 /* doc */
                 "",
index f0bca862d98585972abaf03ade23d336de06243f..29293ea7feec95a82e8023fdf1aeab1af003c7d5 100644 (file)
@@ -135,8 +135,13 @@ Note_spacing_engraver::stop_translation_timestep ()
 
 }
 
-ADD_ACKNOWLEDGER (Note_spacing_engraver, note_column);
-ADD_ACKNOWLEDGER (Note_spacing_engraver, rhythmic_grob);
+
+void
+Note_spacing_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Note_spacing_engraver, note_column);
+  ADD_ACKNOWLEDGER (Note_spacing_engraver, rhythmic_grob);
+}
 
 ADD_TRANSLATOR (Note_spacing_engraver,
                 /* doc */
index d236ed779d28439768480e21fedaa41af7efb490..79d054a7cccf09abb3eee81846b1bdd051180d2a 100644 (file)
@@ -136,7 +136,12 @@ Ottava_spanner_engraver::finalize ()
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Ottava_spanner_engraver, note_column);
+
+void
+Ottava_spanner_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Ottava_spanner_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Ottava_spanner_engraver,
                 /* doc */
index c14a6ee563b11c3e1f09cd6210ed7f7fa8eb1255..b1956910b6bfb7daa3f4fec11dd999ca52f03539 100644 (file)
@@ -37,7 +37,6 @@ protected:
   void stop_translation_timestep ();
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Output_property_engraver, apply_output);
 void
 Output_property_engraver::listen_apply_output (Stream_event *ev)
 {
@@ -78,7 +77,13 @@ Output_property_engraver::Output_property_engraver ()
 {
 }
 
-ADD_ACKNOWLEDGER (Output_property_engraver, grob);
+void
+Output_property_engraver::boot ()
+{
+  ADD_LISTENER (Output_property_engraver, apply_output);
+  ADD_ACKNOWLEDGER (Output_property_engraver, grob);
+}
+
 ADD_TRANSLATOR (Output_property_engraver,
                /* doc */
                "Apply a procedure to any grob acknowledged.",
index dd90ba71cf196afea1691f7d348f9c550ce129d3..fd5b34a088d7a10136cc6306bb6683ec3dc53908 100644 (file)
@@ -168,7 +168,6 @@ Page_turn_engraver::acknowledge_note_head (Grob_info gi)
   note_end_ = now_mom () + dur_ptr->get_length ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Page_turn_engraver, break);
 void
 Page_turn_engraver::listen_break (Stream_event *ev)
 {
@@ -342,7 +341,13 @@ Page_turn_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Page_turn_engraver, note_head);
+
+void
+Page_turn_engraver::boot ()
+{
+  ADD_LISTENER (Page_turn_engraver, break);
+  ADD_ACKNOWLEDGER (Page_turn_engraver, note_head);
+}
 
 ADD_TRANSLATOR (Page_turn_engraver,
                 /* doc */
index 7c44f173d70226f540b266bd24c7c28dfc8d8a76..8cb99ecbb6f1f259fc047677014db523f240ecb5 100644 (file)
@@ -142,14 +142,12 @@ Paper_column_engraver::set_columns (Paper_column *new_command,
   system_->add_column (musical_column_);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, break);
 void
 Paper_column_engraver::listen_break (Stream_event *ev)
 {
   break_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, label);
 void
 Paper_column_engraver::listen_label (Stream_event *ev)
 {
@@ -301,9 +299,16 @@ Paper_column_engraver::start_translation_timestep ()
     }
 }
 
-ADD_ACKNOWLEDGER (Paper_column_engraver, item);
-ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
-ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+
+void
+Paper_column_engraver::boot ()
+{
+  ADD_LISTENER (Paper_column_engraver, break);
+  ADD_LISTENER (Paper_column_engraver, label);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, item);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
+  ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+}
 
 ADD_TRANSLATOR (Paper_column_engraver,
                 /* doc */
index 1479aa4c0be887d711ae4d2b46c3b1e1cdb78f8c..d9dfac1825802a0c38a76fab552296d2397c045f 100644 (file)
@@ -72,7 +72,12 @@ Parenthesis_engraver::acknowledge_grob (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Parenthesis_engraver, grob);
+void
+Parenthesis_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Parenthesis_engraver, grob);
+}
+
 ADD_TRANSLATOR (Parenthesis_engraver,
                 /* doc */
                 "Parenthesize objects whose music cause has the"
index eaae218c1b17a1700a10a394960b1000c1abffac..cb788f02ce7d2381a05b0f6fd63ef13dc60a1391 100644 (file)
@@ -51,7 +51,6 @@ private:
   Stream_event *waiting_event_;
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Part_combine_engraver, part_combine);
 void
 Part_combine_engraver::listen_part_combine (Stream_event *ev)
 {
@@ -61,7 +60,6 @@ Part_combine_engraver::listen_part_combine (Stream_event *ev)
   waiting_event_ = new_event_;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Part_combine_engraver, note);
 void
 Part_combine_engraver::listen_note (Stream_event *)
 {
@@ -137,8 +135,15 @@ Part_combine_engraver::stop_translation_timestep ()
   note_found_ = false;
 }
 
-ADD_ACKNOWLEDGER (Part_combine_engraver, note_head);
-ADD_ACKNOWLEDGER (Part_combine_engraver, stem);
+void
+Part_combine_engraver::boot ()
+{
+  ADD_LISTENER (Part_combine_engraver, part_combine);
+  ADD_LISTENER (Part_combine_engraver, note);
+  ADD_ACKNOWLEDGER (Part_combine_engraver, note_head);
+  ADD_ACKNOWLEDGER (Part_combine_engraver, stem);
+}
+
 ADD_TRANSLATOR (Part_combine_engraver,
                 /* doc */
                 "Part combine engraver for orchestral scores: Print markings"
index 895e06981ec6483c1cfcdb7f1b460f41a625c52e..59655a110abf186a4d5746907484518447e92be8 100644 (file)
@@ -85,7 +85,6 @@ Percent_repeat_engraver::start_translation_timestep ()
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Percent_repeat_engraver, percent);
 void
 Percent_repeat_engraver::listen_percent (Stream_event *ev)
 {
@@ -169,6 +168,12 @@ Percent_repeat_engraver::stop_translation_timestep ()
 {
 }
 
+void
+Percent_repeat_engraver::boot ()
+{
+  ADD_LISTENER (Percent_repeat_engraver, percent);
+}
+
 ADD_TRANSLATOR (Percent_repeat_engraver,
                 /* doc */
                 "Make whole measure repeats.",
index b1a2f23ea02aefc38018583b64c72a8bfab2d885..7d4f16bcea6072f43f5d3cb3679c19473f088941 100644 (file)
@@ -56,14 +56,12 @@ Phrasing_slur_engraver::event_symbol ()
   return ly_symbol2scm ("phrasing-slur-event");
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Phrasing_slur_engraver, phrasing_slur);
 void
 Phrasing_slur_engraver::listen_phrasing_slur (Stream_event *ev)
 {
   Slur_proto_engraver::listen_slur (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Phrasing_slur_engraver, note);
 void
 Phrasing_slur_engraver::listen_note (Stream_event *ev)
 {
@@ -76,15 +74,22 @@ Phrasing_slur_engraver::acknowledge_slur (Grob_info info)
   acknowledge_extra_object (info);
 }
 
-ADD_ACKNOWLEDGER (Phrasing_slur_engraver, inline_accidental);
-ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering)
-ADD_ACKNOWLEDGER (Phrasing_slur_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);
+
+void
+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 (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_TRANSLATOR (Phrasing_slur_engraver,
                 /* doc */
index 7134a6cfc7797d895491db906a751d502bfc3295..3fa7c5e479a44e4b579a0359febaabba5a9e3e59 100644 (file)
@@ -248,11 +248,16 @@ Piano_pedal_align_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, note_column);
-ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_bracket);
-ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_script);
 
-ADD_END_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_bracket);
+
+void
+Piano_pedal_align_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, note_column);
+  ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_bracket);
+  ADD_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_script);
+  ADD_END_ACKNOWLEDGER (Piano_pedal_align_engraver, piano_pedal_bracket);
+}
 
 ADD_TRANSLATOR (Piano_pedal_align_engraver,
                 /* doc */
index 2fb99407d50c7c9a7061fb832d89d662ce38b27d..d0e35713d981256103001ad60b389c2c9f905ac8 100644 (file)
@@ -205,7 +205,6 @@ Piano_pedal_engraver::initialize ()
   info_list_[NUM_PEDAL_TYPES].type_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, sostenuto);
 void
 Piano_pedal_engraver::listen_sostenuto (Stream_event *ev)
 {
@@ -213,7 +212,6 @@ Piano_pedal_engraver::listen_sostenuto (Stream_event *ev)
   ASSIGN_EVENT_ONCE (info_list_[SOSTENUTO].event_drul_[d], ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, sustain);
 void
 Piano_pedal_engraver::listen_sustain (Stream_event *ev)
 {
@@ -221,7 +219,6 @@ Piano_pedal_engraver::listen_sustain (Stream_event *ev)
   ASSIGN_EVENT_ONCE (info_list_[SUSTAIN].event_drul_[d], ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, una_corda);
 void
 Piano_pedal_engraver::listen_una_corda (Stream_event *ev)
 {
@@ -479,6 +476,14 @@ Piano_pedal_engraver::typeset_all (Pedal_info *p)
     }
 }
 
+void
+Piano_pedal_engraver::boot ()
+{
+  ADD_LISTENER (Piano_pedal_engraver, sostenuto);
+  ADD_LISTENER (Piano_pedal_engraver, sustain);
+  ADD_LISTENER (Piano_pedal_engraver, una_corda);
+}
+
 ADD_TRANSLATOR (Piano_pedal_engraver,
                 /* doc */
                 "Engrave piano pedal symbols and brackets.",
index 49ec0dd7feb042ea052de8a6b01069b59366187b..ba2d2b50428ef138d943b76babdaa36321157c24 100644 (file)
@@ -146,7 +146,6 @@ Piano_pedal_performer::start_translation_timestep ()
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_performer, sostenuto);
 void
 Piano_pedal_performer::listen_sostenuto (Stream_event *r)
 {
@@ -154,7 +153,6 @@ Piano_pedal_performer::listen_sostenuto (Stream_event *r)
   info_alist_[SOSTENUTO].event_drul_[d] = r;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_performer, sustain);
 void
 Piano_pedal_performer::listen_sustain (Stream_event *r)
 {
@@ -162,7 +160,6 @@ Piano_pedal_performer::listen_sustain (Stream_event *r)
   info_alist_[SUSTAIN].event_drul_[d] = r;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_performer, una_corda);
 void
 Piano_pedal_performer::listen_una_corda (Stream_event *r)
 {
@@ -170,6 +167,14 @@ Piano_pedal_performer::listen_una_corda (Stream_event *r)
   info_alist_[UNA_CORDA].event_drul_[d] = r;
 }
 
+void
+Piano_pedal_performer::boot ()
+{
+  ADD_LISTENER (Piano_pedal_performer, sostenuto);
+  ADD_LISTENER (Piano_pedal_performer, sustain);
+  ADD_LISTENER (Piano_pedal_performer, una_corda);
+}
+
 ADD_TRANSLATOR (Piano_pedal_performer,
                 /* doc */
                 "",
index d9796ff0e0789feb3c5d842228b8c4be968282da..5d403c79e4a0055e0102766283816ce93e270d4f 100644 (file)
@@ -44,7 +44,12 @@ Pitch_squash_engraver::Pitch_squash_engraver ()
 }
 
 #include "translator.icc"
-ADD_ACKNOWLEDGER (Pitch_squash_engraver, note_head);
+void
+Pitch_squash_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Pitch_squash_engraver, note_head);
+}
+
 ADD_TRANSLATOR (Pitch_squash_engraver,
                 /* doc */
                 "Set the vertical position of note heads to"
index 30d734346e53df7565c419817a9637ad1524afc0..54ef0827a7c43a19b32fb85c2f5617457a348373 100644 (file)
@@ -169,11 +169,16 @@ Pitched_trill_engraver::stop_translation_timestep ()
   trill_accidental_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Pitched_trill_engraver, note_head);
-ADD_ACKNOWLEDGER (Pitched_trill_engraver, dots);
-ADD_ACKNOWLEDGER (Pitched_trill_engraver, stem);
-ADD_ACKNOWLEDGER (Pitched_trill_engraver, flag);
-ADD_ACKNOWLEDGER (Pitched_trill_engraver, trill_spanner);
+
+void
+Pitched_trill_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Pitched_trill_engraver, note_head);
+  ADD_ACKNOWLEDGER (Pitched_trill_engraver, dots);
+  ADD_ACKNOWLEDGER (Pitched_trill_engraver, stem);
+  ADD_ACKNOWLEDGER (Pitched_trill_engraver, flag);
+  ADD_ACKNOWLEDGER (Pitched_trill_engraver, trill_spanner);
+}
 
 ADD_TRANSLATOR (Pitched_trill_engraver,
                 /* doc */
index e147f53ccadb3a5da4663b83cf59616d518911f4..d5439726bbe6cdd04d9c4b846385626acdc1d415 100644 (file)
@@ -136,8 +136,13 @@ Pure_from_neighbor_engraver::finalize ()
   pure_relevants_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, item);
-ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, pure_from_neighbor);
+void
+Pure_from_neighbor_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, item);
+  ADD_ACKNOWLEDGER (Pure_from_neighbor_engraver, pure_from_neighbor);
+}
+
 ADD_TRANSLATOR (Pure_from_neighbor_engraver,
                 /* doc */
                 "Coordinates items that get their pure heights from their neighbors.",
index 67477b1f01df6cd589a7d24559132d1e12f64466..d11b633fd5cb4b92ffb32af56f83c340056892bd 100644 (file)
@@ -135,6 +135,12 @@ Repeat_acknowledge_engraver::process_music ()
     }
 }
 
+void
+Repeat_acknowledge_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Repeat_acknowledge_engraver,
                 /* doc */
                 "Acknowledge repeated music, and convert the contents of"
index 4eea8e5800ae271fe103da8241a225a1790386c0..6eead573099d288acd3ccc9d9a3d62f14cac48d0 100644 (file)
@@ -53,7 +53,6 @@ Repeat_tie_engraver::stop_translation_timestep ()
   semi_ties_.clear ();
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Repeat_tie_engraver, repeat_tie);
 void
 Repeat_tie_engraver::listen_repeat_tie (Stream_event *ev)
 {
@@ -88,7 +87,13 @@ Repeat_tie_engraver::acknowledge_note_head (Grob_info inf)
 
 }
 
-ADD_ACKNOWLEDGER (Repeat_tie_engraver, note_head);
+void
+Repeat_tie_engraver::boot ()
+{
+  ADD_LISTENER (Repeat_tie_engraver, repeat_tie);
+  ADD_ACKNOWLEDGER (Repeat_tie_engraver, note_head);
+}
+
 ADD_TRANSLATOR (Repeat_tie_engraver,
                 /* doc */
                 "Create repeat ties.",
index a70641cfd05e522d3f67e7bc3c8addb4d06d18bb..56a6783fbfa34d338eac0366b6ecf5e9a90d864d 100644 (file)
@@ -94,6 +94,12 @@ Rest_collision_engraver::stop_translation_timestep ()
   rest_collision_ = 0;
 }
 
+void
+Rest_collision_engraver::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Rest_collision_engraver,
                 /* doc */
                 "Handle collisions of rests.",
index b40aeee8a3738e0b43c7080d60e2f715d932b662..64ff97a35fcf48fe58a0d5460a63ffcd5186c59f 100644 (file)
@@ -80,13 +80,18 @@ Rest_engraver::process_music ()
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Rest_engraver, rest);
 void
 Rest_engraver::listen_rest (Stream_event *ev)
 {
   ASSIGN_EVENT_ONCE (rest_event_, ev);
 }
 
+void
+Rest_engraver::boot ()
+{
+  ADD_LISTENER (Rest_engraver, rest);
+}
+
 ADD_TRANSLATOR (Rest_engraver,
                 /* doc */
                 "Engrave rests.",
index 28a06f79b0672dfa88e341c65fad3682448b8ce9..d6e461060ba741a2d22f0d49d2a1224197545cf9 100644 (file)
@@ -134,9 +134,14 @@ Rhythmic_column_engraver::stop_translation_timestep ()
   flag_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Rhythmic_column_engraver, stem);
-ADD_ACKNOWLEDGER (Rhythmic_column_engraver, flag);
-ADD_ACKNOWLEDGER (Rhythmic_column_engraver, rhythmic_head);
+
+void
+Rhythmic_column_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Rhythmic_column_engraver, stem);
+  ADD_ACKNOWLEDGER (Rhythmic_column_engraver, flag);
+  ADD_ACKNOWLEDGER (Rhythmic_column_engraver, rhythmic_head);
+}
 
 ADD_TRANSLATOR (Rhythmic_column_engraver,
                 /* doc */
index dc34098664d19f6d8ae59ea7d460813d508775de..8caf8b903c4e2b92f4f67aea0a51510a827c5291 100644 (file)
@@ -77,7 +77,12 @@ Script_column_engraver::process_acknowledged ()
     script_column_ = make_item ("ScriptColumn", SCM_EOL);
 }
 
-ADD_ACKNOWLEDGER (Script_column_engraver, side_position);
+void
+Script_column_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Script_column_engraver, side_position);
+}
+
 ADD_TRANSLATOR (Script_column_engraver,
                 /* doc */
                 "Find potentially colliding scripts and put them into a"
index 62c3de482cd359256d824135fd0420d29455bd91..578ed84ad4a0b9ea687c8cf4ad0293a2dd64ade2 100644 (file)
@@ -71,7 +71,6 @@ Script_engraver::Script_engraver ()
 {
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Script_engraver, articulation);
 void
 Script_engraver::listen_articulation (Stream_event *ev)
 {
@@ -275,13 +274,19 @@ Script_engraver::stop_translation_timestep ()
   scripts_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Script_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Script_engraver, stem);
-ADD_ACKNOWLEDGER (Script_engraver, tie);
-ADD_END_ACKNOWLEDGER (Script_engraver, tie);
-ADD_ACKNOWLEDGER (Script_engraver, note_column);
-ADD_ACKNOWLEDGER (Script_engraver, stem_tremolo);
-ADD_ACKNOWLEDGER (Script_engraver, inline_accidental);
+
+void
+Script_engraver::boot ()
+{
+  ADD_LISTENER (Script_engraver, articulation);
+  ADD_ACKNOWLEDGER (Script_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (Script_engraver, stem);
+  ADD_ACKNOWLEDGER (Script_engraver, tie);
+  ADD_END_ACKNOWLEDGER (Script_engraver, tie);
+  ADD_ACKNOWLEDGER (Script_engraver, note_column);
+  ADD_ACKNOWLEDGER (Script_engraver, stem_tremolo);
+  ADD_ACKNOWLEDGER (Script_engraver, inline_accidental);
+}
 
 ADD_TRANSLATOR (Script_engraver,
                 /* doc */
index 35b5038020f34431faa1819ff09b36611868ce16..390cba5f96ef29f89bc4474c02e83a99b35fbb66 100644 (file)
@@ -89,8 +89,13 @@ Script_row_engraver::process_acknowledged ()
     script_row_ = make_item ("ScriptRow", SCM_EOL);
 }
 
-ADD_ACKNOWLEDGER (Script_row_engraver, accidental_placement);
-ADD_ACKNOWLEDGER (Script_row_engraver, side_position);
+void
+Script_row_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Script_row_engraver, accidental_placement);
+  ADD_ACKNOWLEDGER (Script_row_engraver, side_position);
+}
+
 ADD_TRANSLATOR (Script_row_engraver,
                 /* doc */
                 "Determine order in horizontal side position elements.",
index 08069afda8858634692b5d73ea8d99d92e025371..c2f76349dff946bce1f7286eaba17aeb10e8d726 100644 (file)
@@ -153,8 +153,13 @@ Separating_line_group_engraver::stop_translation_timestep ()
   break_aligned_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Separating_line_group_engraver, item);
-ADD_ACKNOWLEDGER (Separating_line_group_engraver, break_aligned);
+
+void
+Separating_line_group_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Separating_line_group_engraver, item);
+  ADD_ACKNOWLEDGER (Separating_line_group_engraver, break_aligned);
+}
 
 ADD_TRANSLATOR (Separating_line_group_engraver,
                 /* doc */
index f9f0bfb76a0adbe3ea3b926da899b895b31d8500..2134503e8880e93c6c213e3bad771250fd33b02f 100644 (file)
@@ -44,7 +44,6 @@ Slash_repeat_engraver::Slash_repeat_engraver ()
   slash_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Slash_repeat_engraver, repeat_slash);
 void
 Slash_repeat_engraver::listen_repeat_slash (Stream_event *ev)
 {
@@ -65,6 +64,12 @@ Slash_repeat_engraver::process_music ()
     }
 }
 
+void
+Slash_repeat_engraver::boot ()
+{
+  ADD_LISTENER (Slash_repeat_engraver, repeat_slash);
+}
+
 ADD_TRANSLATOR (Slash_repeat_engraver,
                 /* doc */
                 "Make beat repeats.",
index 31621844a9c568ce840bc0dcc3fe35edfd18720b..aa09f4db1f865def9bc652812232f779475c558e 100644 (file)
@@ -57,14 +57,12 @@ Slur_engraver::event_symbol ()
   return ly_symbol2scm ("slur-event");
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Slur_engraver, slur);
 void
 Slur_engraver::listen_slur (Stream_event *ev)
 {
   Slur_proto_engraver::listen_slur (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Slur_engraver, note);
 void
 Slur_engraver::listen_note (Stream_event *ev)
 {
@@ -77,14 +75,21 @@ Slur_engraver::set_melisma (bool m)
   context ()->set_property ("slurMelismaBusy", ly_bool2scm (m));
 }
 
-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);
+void
+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_TRANSLATOR (Slur_engraver,
                 /* doc */
                 "Build slur grobs from slur events.",
index 222a9d75faa7eb487802e17cef96c96ac36ce466..c1d8de3bb4f6ca981d6d71adcde5bb217b15e4df 100644 (file)
@@ -83,7 +83,6 @@ Slur_performer::start_translation_timestep ()
   now_stop_ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Slur_performer, slur);
 void
 Slur_performer::listen_slur (Stream_event *ev)
 {
@@ -95,6 +94,12 @@ Slur_performer::listen_slur (Stream_event *ev)
     now_stop_ev_ = ev;
 }
 
+void
+Slur_performer::boot ()
+{
+  ADD_LISTENER (Slur_performer, slur);
+}
+
 ADD_TRANSLATOR (Slur_performer,
                 /* doc */
                 "",
index cc5b1e31d1c2f6c92365933702744c385bfcf0c0..6628fe36b4b3e232866bbfb9d035852ad8b16b58 100644 (file)
@@ -99,7 +99,6 @@ Spacing_engraver::Spacing_engraver ()
   start_section_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Spacing_engraver, spacing_section);
 void
 Spacing_engraver::listen_spacing_section (Stream_event *ev)
 {
@@ -261,10 +260,16 @@ Spacing_engraver::start_translation_timestep ()
     stopped_durations_.push_back (playing_durations_.get ());
 }
 
-ADD_ACKNOWLEDGER (Spacing_engraver, staff_spacing);
-ADD_ACKNOWLEDGER (Spacing_engraver, note_spacing);
-ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob);
+
+void
+Spacing_engraver::boot ()
+{
+  ADD_LISTENER (Spacing_engraver, spacing_section);
+  ADD_ACKNOWLEDGER (Spacing_engraver, staff_spacing);
+  ADD_ACKNOWLEDGER (Spacing_engraver, note_spacing);
+  ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob);
+}
 
 ADD_TRANSLATOR (Spacing_engraver,
                 /* doc */
index f66c8770b52333c9bbc23c19d9d3c01bbeb510a8..231e484409040d2f2d50a01ba5b94c4121c3c39d 100644 (file)
@@ -125,8 +125,13 @@ Span_arpeggio_engraver::stop_translation_timestep ()
   note_columns_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio);
-ADD_ACKNOWLEDGER (Span_arpeggio_engraver, note_column);
+void
+Span_arpeggio_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio);
+  ADD_ACKNOWLEDGER (Span_arpeggio_engraver, note_column);
+}
+
 ADD_TRANSLATOR (Span_arpeggio_engraver,
                 /* doc */
                 "Make arpeggios that span multiple staves.",
index 63c245e70cbcb32f4620b4e8ecd4fd9a9ae4b8c7..fa1608b72e69309615eb79cfc2624e78b3289954 100644 (file)
@@ -94,7 +94,12 @@ Span_bar_engraver::stop_translation_timestep ()
   bars_.resize (0);
 }
 
-ADD_ACKNOWLEDGER (Span_bar_engraver, bar_line);
+void
+Span_bar_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Span_bar_engraver, bar_line);
+}
+
 ADD_TRANSLATOR (Span_bar_engraver,
                 /* doc */
                 "Make cross-staff bar lines: It catches all normal bar lines"
index 304564398f0841c7832aa8d5412f6b8e04a30459..07fc7228148d38da147db96a15e01b685ce9b376 100644 (file)
@@ -175,8 +175,13 @@ Span_bar_stub_engraver::stop_translation_timestep ()
   axis_groups_ = axis_groups;
 }
 
-ADD_ACKNOWLEDGER (Span_bar_stub_engraver, span_bar);
-ADD_ACKNOWLEDGER (Span_bar_stub_engraver, hara_kiri_group_spanner);
+void
+Span_bar_stub_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Span_bar_stub_engraver, span_bar);
+  ADD_ACKNOWLEDGER (Span_bar_stub_engraver, hara_kiri_group_spanner);
+}
+
 ADD_TRANSLATOR (Span_bar_stub_engraver,
                 /* doc */
                 "Make stubs for span bars in all contexts that the span bars cross.",
index 4a47aade98c241b060165500b24d66340bfd9123..adebe934ef0e2fc3add9ddf8ecea568a152c7faa 100644 (file)
@@ -66,8 +66,13 @@ Spanner_break_forbid_engraver::Spanner_break_forbid_engraver ()
 {
 }
 
-ADD_END_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
-ADD_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
+void
+Spanner_break_forbid_engraver::boot ()
+{
+  ADD_END_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
+  ADD_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
+}
+
 ADD_TRANSLATOR (Spanner_break_forbid_engraver,
                 /* doc */
                 "Forbid breaks in certain spanners.",
index 2ff2b79cafcb68b1f9c4a6cf19bb7aab9792bd9f..259055b5f4f835458d3a8659a6b7524bace3e4e7 100644 (file)
@@ -54,8 +54,13 @@ Staff_collecting_engraver::acknowledge_end_staff_symbol (Grob_info gi)
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
-ADD_END_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
+
+void
+Staff_collecting_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
+  ADD_END_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
+}
 
 ADD_TRANSLATOR (Staff_collecting_engraver,
                 /* doc */
index 26781f0dcd5b53529d6f1ba986b011cdfc73a09a..3a05cbd0e25213673aa5577c55c7eb7d3fe5feaf 100644 (file)
@@ -79,6 +79,12 @@ map<string, int> Staff_performer::static_channel_map_;
 int Staff_performer::channel_count_ = 0;
 int Staff_performer::staff_performer_count_ = 0;
 
+void
+Staff_performer::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Staff_performer,
                 /* doc */
                 "",
index cad91e76c3e958d318ff50305432b536549a41dc..2d836fbee995670e8e6c83486f9189f5a59831e3 100644 (file)
@@ -76,7 +76,6 @@ Staff_symbol_engraver::Staff_symbol_engraver ()
   span_events_.set (0, 0);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Staff_symbol_engraver, staff_span);
 void
 Staff_symbol_engraver::listen_staff_span (Stream_event *ev)
 {
@@ -163,7 +162,13 @@ Staff_symbol_engraver::acknowledge_grob (Grob_info s)
     }
 }
 
-ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob);
+
+void
+Staff_symbol_engraver::boot ()
+{
+  ADD_LISTENER (Staff_symbol_engraver, staff_span);
+  ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob);
+}
 
 ADD_TRANSLATOR (Staff_symbol_engraver,
                 /* doc */
index c32653abe07adaa01f471255c0c2e7b2dcaa18ca..ac1327714939b2c524f6568c65188ce4969314cb 100644 (file)
@@ -69,8 +69,13 @@ Stanza_number_align_engraver::stop_translation_timestep ()
   lyrics_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Stanza_number_align_engraver, lyric_syllable);
-ADD_ACKNOWLEDGER (Stanza_number_align_engraver, stanza_number);
+
+void
+Stanza_number_align_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Stanza_number_align_engraver, lyric_syllable);
+  ADD_ACKNOWLEDGER (Stanza_number_align_engraver, stanza_number);
+}
 
 ADD_TRANSLATOR (Stanza_number_align_engraver,
                 /* doc */
index 892bae633c35b4845abe4a439a0dad83fc9dbdfe..54432ff1bcfa7f7f7273fbe6ce5c158dd9fcec29 100644 (file)
@@ -83,7 +83,12 @@ Stanza_number_engraver::stop_translation_timestep ()
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Stanza_number_engraver, lyric_syllable);
+void
+Stanza_number_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Stanza_number_engraver, lyric_syllable);
+}
+
 ADD_TRANSLATOR (Stanza_number_engraver,
                 /* doc */
                 "Engrave stanza numbers.",
index 2f2eaf82daedf380d0b53cd1505be4ff1ca9016f..81e31dcc369152ce098763df0405d0d3f7fd7898 100644 (file)
@@ -212,7 +212,6 @@ Stem_engraver::stop_translation_timestep ()
   tremolo_ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tuplet_span);
 void
 Stem_engraver::listen_tuplet_span (Stream_event *ev)
 {
@@ -226,14 +225,20 @@ Stem_engraver::listen_tuplet_span (Stream_event *ev)
     }
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Stem_engraver, tremolo);
 void
 Stem_engraver::listen_tremolo (Stream_event *ev)
 {
   ASSIGN_EVENT_ONCE (tremolo_ev_, ev);
 }
 
-ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head);
+
+void
+Stem_engraver::boot ()
+{
+  ADD_LISTENER (Stem_engraver, tuplet_span);
+  ADD_LISTENER (Stem_engraver, tremolo);
+  ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head);
+}
 
 ADD_TRANSLATOR (Stem_engraver,
                 /* doc */
index 7eadbb0eec3ca70d0cfec80e8685b888f33f5273..ade977859a4aa0dc06701c88d27054eb9652e4e5 100644 (file)
@@ -229,8 +229,13 @@ System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info i
   nesting_->add_support (inf.grob ());
 }
 
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
+
+void
+System_start_delimiter_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
+  ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
+}
 
 ADD_TRANSLATOR (System_start_delimiter_engraver,
                 /* doc */
index 4d47d77982a33d4ae34dff062a2862f0e11ed395..e452e8f717dc92920f108e92949f11ff26577fb5 100644 (file)
@@ -61,21 +61,18 @@ Tab_note_heads_engraver::Tab_note_heads_engraver ()
 {
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tab_note_heads_engraver, note);
 void
 Tab_note_heads_engraver::listen_note (Stream_event *ev)
 {
   note_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tab_note_heads_engraver, string_number);
 void
 Tab_note_heads_engraver::listen_string_number (Stream_event *ev)
 {
   tabstring_events_.push_back (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tab_note_heads_engraver, fingering);
 void
 Tab_note_heads_engraver::listen_fingering (Stream_event *ev)
 {
@@ -142,6 +139,14 @@ Tab_note_heads_engraver::stop_translation_timestep ()
   fingering_events_.clear ();
 }
 
+void
+Tab_note_heads_engraver::boot ()
+{
+  ADD_LISTENER (Tab_note_heads_engraver, note);
+  ADD_LISTENER (Tab_note_heads_engraver, string_number);
+  ADD_LISTENER (Tab_note_heads_engraver, fingering);
+}
+
 ADD_TRANSLATOR (Tab_note_heads_engraver,
                 /* doc */
                 "Generate one or more tablature note heads from event of type"
index be0b343de38d674cfcde27c148a29d4e95cff73f..f1f95df49cd1abdb13287ace00e6f5eb4ed2bb99 100644 (file)
@@ -42,7 +42,12 @@ Tab_staff_symbol_engraver::Tab_staff_symbol_engraver ()
 
 #include "translator.icc"
 
-ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, staff_symbol);
+void
+Tab_staff_symbol_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, staff_symbol);
+}
+
 ADD_TRANSLATOR (Tab_staff_symbol_engraver,
                 /* doc */
                 "Create a tablature staff symbol, but look at"
index b26bf0f6f6a9a45f52d30e8c9927c6f0750fdcc0..b8e9966862ee9eb83b3444e6156a6d2637dd1926 100644 (file)
@@ -110,9 +110,14 @@ Tab_tie_follow_engraver::stop_translation_timestep ()
   note_heads_.clear ();
 }
 
-ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, slur);
-ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, glissando);
-ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, tab_note_head);
+
+void
+Tab_tie_follow_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, slur);
+  ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, glissando);
+  ADD_ACKNOWLEDGER (Tab_tie_follow_engraver, tab_note_head);
+}
 
 ADD_TRANSLATOR (Tab_tie_follow_engraver,
                 /* doc */
index b17e9202cbab8097392ec1a53cb5b440315f35ac..683f133d6466c28ae3774448777f9e397f3fe4b4 100644 (file)
@@ -85,6 +85,12 @@ Tempo_performer::stop_translation_timestep ()
     }
 }
 
+void
+Tempo_performer::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Tempo_performer,
                 /* doc */
                 "",
index 2a12e75a7aa90937235ab1577574daffe11141f6..7dd1e36e75c1c736e2be210017092ba349427bd9 100644 (file)
@@ -46,7 +46,6 @@ protected:
   DECLARE_TRANSLATOR_LISTENER (text_script);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Text_engraver, text_script);
 void
 Text_engraver::listen_text_script (Stream_event *ev)
 {
@@ -110,7 +109,13 @@ Text_engraver::Text_engraver ()
 {
 }
 
-ADD_ACKNOWLEDGER (Text_engraver, note_column);
+
+void
+Text_engraver::boot ()
+{
+  ADD_LISTENER (Text_engraver, text_script);
+  ADD_ACKNOWLEDGER (Text_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Text_engraver,
                 /* doc */
index 249fdce04a30820016bee93d980236bee636ef00..7ede49e54d4a85ea9524ef59f6803587eb7707c1 100644 (file)
@@ -55,7 +55,6 @@ Text_spanner_engraver::Text_spanner_engraver ()
   event_drul_.set (0, 0);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Text_spanner_engraver, text_span);
 void
 Text_spanner_engraver::listen_text_span (Stream_event *ev)
 {
@@ -156,7 +155,13 @@ Text_spanner_engraver::acknowledge_note_column (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column);
+
+void
+Text_spanner_engraver::boot ()
+{
+  ADD_LISTENER (Text_spanner_engraver, text_span);
+  ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Text_spanner_engraver,
                 /* doc */
index 56fb4a337ddce22c9653c16d74635e25501e277a..1e48db7e9a39a4122e10e3a3b2bf26cdce2da357 100644 (file)
@@ -101,7 +101,6 @@ Tie_engraver::Tie_engraver ()
   event_processed_ = false;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tie_engraver, tie);
 void
 Tie_engraver::listen_tie (Stream_event *ev)
 {
@@ -385,7 +384,13 @@ Tie_engraver::typeset_tie (Spanner *her)
   her->set_bound (RIGHT, right_head);
 }
 
-ADD_ACKNOWLEDGER (Tie_engraver, note_head);
+void
+Tie_engraver::boot ()
+{
+  ADD_LISTENER (Tie_engraver, tie);
+  ADD_ACKNOWLEDGER (Tie_engraver, note_head);
+}
+
 ADD_TRANSLATOR (Tie_engraver,
                 /* doc */
                 "Generate ties between note heads of equal pitch.",
index b1aa15ffeb645451287259cbbf0dc41ad29568e2..51fcf07193a1eb34f7e57053114a0c3783cce099 100644 (file)
@@ -61,7 +61,6 @@ Tie_performer::Tie_performer ()
   event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tie_performer, tie);
 void
 Tie_performer::listen_tie (Stream_event *ev)
 {
@@ -184,6 +183,12 @@ Tie_performer::stop_translation_timestep ()
   now_tied_heads_.clear ();
 }
 
+void
+Tie_performer::boot ()
+{
+  ADD_LISTENER (Tie_performer, tie);
+}
+
 ADD_TRANSLATOR (Tie_performer,
                 /* doc */
                 "Generate ties between note heads of equal pitch.",
index df6ae6dd1bb70521736f5dd5f56e68f5ed219660..186d9e20e0342968563bcd749f1a14fa3aaf018d 100644 (file)
@@ -60,7 +60,6 @@ Time_signature_engraver::Time_signature_engraver ()
   last_time_fraction_ = SCM_BOOL_F;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Time_signature_engraver, time_signature);
 void
 Time_signature_engraver::listen_time_signature (Stream_event *ev)
 {
@@ -116,6 +115,12 @@ Time_signature_engraver::stop_translation_timestep ()
   time_cause_ = SCM_EOL;
 }
 
+void
+Time_signature_engraver::boot ()
+{
+  ADD_LISTENER (Time_signature_engraver, time_signature);
+}
+
 ADD_TRANSLATOR (Time_signature_engraver,
                 /* doc */
                 "Create a @ref{TimeSignature} whenever"
index d9c25554fd7c637e8ecdd793047de78b1c81a6d1..3a3bbd2ca328de3c563bdc5314483c0bcea50d90 100644 (file)
@@ -81,6 +81,12 @@ Time_signature_performer::stop_translation_timestep ()
 
 #include "translator.icc"
 
+void
+Time_signature_performer::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Time_signature_performer,
                 /* doc */
                 "",
index 9bd7e758d8aed170fdba587b1955a792d08ef59d..4716eceb24c489d05ff30feb19a304a449f80f2f 100644 (file)
@@ -223,6 +223,12 @@ Timing_translator::start_translation_timestep ()
 
 #include "translator.icc"
 
+void
+Timing_translator::boot ()
+{
+
+}
+
 ADD_TRANSLATOR (Timing_translator,
                 /* doc */
                 "This engraver adds the alias @code{Timing} to its containing"
index eb36aff7e6d465c6040f0ad9f2fea6f1fd8a1004..421a333a86b2538a461c00a9bac61ee9a80bfb98 100644 (file)
@@ -63,7 +63,6 @@ Trill_spanner_engraver::Trill_spanner_engraver ()
   event_drul_.set (0, 0);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Trill_spanner_engraver, trill_span);
 void
 Trill_spanner_engraver::listen_trill_span (Stream_event *ev)
 {
@@ -152,7 +151,13 @@ Trill_spanner_engraver::finalize ()
     }
 }
 
-ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column);
+
+void
+Trill_spanner_engraver::boot ()
+{
+  ADD_LISTENER (Trill_spanner_engraver, trill_span);
+  ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column);
+}
 
 ADD_TRANSLATOR (Trill_spanner_engraver,
                 /* doc */
index 369389200fe95e4e8dd97dea1b1c44dc2f273430..d8be4c20978e32de3c7897286e6a2c75b7901694 100644 (file)
@@ -73,7 +73,6 @@ protected:
   void process_music ();
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Tuplet_engraver, tuplet_span);
 void
 Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
 {
@@ -272,10 +271,16 @@ Tuplet_engraver::Tuplet_engraver ()
 {
 }
 
-ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
-ADD_ACKNOWLEDGER (Tuplet_engraver, script);
-ADD_ACKNOWLEDGER (Tuplet_engraver, finger);
-ADD_ACKNOWLEDGER (Tuplet_engraver, string_number);
+void
+Tuplet_engraver::boot ()
+{
+  ADD_LISTENER (Tuplet_engraver, tuplet_span);
+  ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
+  ADD_ACKNOWLEDGER (Tuplet_engraver, script);
+  ADD_ACKNOWLEDGER (Tuplet_engraver, finger);
+  ADD_ACKNOWLEDGER (Tuplet_engraver, string_number);
+}
+
 ADD_TRANSLATOR (Tuplet_engraver,
                 /* doc */
                 "Catch tuplet events and generate appropriate bracket.",
index 81138b3670ebd749b84f360b06ca99ac5eb13195..d709765e5c89824841c434de06fc1540ae2c6b48 100644 (file)
@@ -81,7 +81,12 @@ Tweak_engraver::acknowledge_grob (Grob_info info)
     }
 }
 
-ADD_ACKNOWLEDGER (Tweak_engraver, grob);
+void
+Tweak_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Tweak_engraver, grob);
+}
+
 ADD_TRANSLATOR (Tweak_engraver,
                 /* doc */
                 "Read the @code{tweaks} property from the originating event,"
index a98471369cb7baa3f77aa5f7a6c4995a7e5b1807..35c645a5f67074e0404e8e4060037a64f82a39ed 100644 (file)
@@ -86,14 +86,12 @@ protected:
   DECLARE_TRANSLATOR_LISTENER (ligature);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Vaticana_ligature_engraver, pes_or_flexa);
 void
 Vaticana_ligature_engraver::listen_pes_or_flexa (Stream_event *ev)
 {
   Gregorian_ligature_engraver::listen_pes_or_flexa (ev);
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Vaticana_ligature_engraver, ligature);
 void
 Vaticana_ligature_engraver::listen_ligature (Stream_event *ev)
 {
@@ -741,8 +739,15 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 #endif
 }
 
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
+void
+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_TRANSLATOR (Vaticana_ligature_engraver,
                 /* doc */
                 "Handle ligatures by glueing special ligature heads"
index 6a47809fd728d64fe33f03020bae8440cfb79d30..40d4146828e55f1d1d28407db11c56a0ff0f627b 100644 (file)
@@ -48,7 +48,12 @@ protected:
   bool top_level_;
 };
 
-ADD_ACKNOWLEDGER (Vertical_align_engraver, axis_group);
+void
+Vertical_align_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Vertical_align_engraver, axis_group);
+}
+
 ADD_TRANSLATOR (Vertical_align_engraver,
                 /* doc */
                 "Catch groups (staves, lyrics lines, etc.) and stack them"
index bd198cbb67faad5c395bd1567133d6413019c938..837c3b7b5736ffabadce11b06befae8645f2f9bd 100644 (file)
@@ -189,7 +189,12 @@ Volta_engraver::stop_translation_timestep ()
 /*
   TODO: should attach volta to paper-column if no bar is found.
 */
-ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
+void
+Volta_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
+}
+
 ADD_TRANSLATOR (Volta_engraver,
                 /* doc */
                 "Make volta brackets.",