]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/chord-name-engraver.cc
Doc-es: various updates.
[lilypond.git] / lily / chord-name-engraver.cc
index dba699c8f4aaf119f0de742c33d96ca6fb3fefc7..3d989ccfb14de07ee33cf981f0e5e67ed338a3cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2015 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -39,8 +39,8 @@ protected:
   void stop_translation_timestep ();
   void process_music ();
   virtual void finalize ();
-  DECLARE_TRANSLATOR_LISTENER (note);
-  DECLARE_TRANSLATOR_LISTENER (rest);
+  void listen_note (Stream_event *);
+  void listen_rest (Stream_event *);
 private:
   vector<Stream_event *> notes_;
 
@@ -52,7 +52,8 @@ Chord_name_engraver::finalize ()
 {
 }
 
-Chord_name_engraver::Chord_name_engraver ()
+Chord_name_engraver::Chord_name_engraver (Context *c)
+  : Engraver (c)
 {
   rest_event_ = 0;
 }
@@ -96,22 +97,22 @@ Chord_name_engraver::process_music ()
             {
               Stream_event *n = notes_[i];
               SCM p = n->get_property ("pitch");
-              if (!Pitch::unsmob (p))
+              if (!unsmob<Pitch> (p))
                 continue;
 
-              if (n->get_property ("bass") == SCM_BOOL_T)
+              if (to_boolean (n->get_property ("bass")))
                 bass = p;
               else
                 {
                   SCM oct = n->get_property ("octavation");
                   if (scm_is_number (oct))
                     {
-                      Pitch orig = Pitch::unsmob (p)->transposed (Pitch (-scm_to_int (oct), 0));
+                      Pitch orig = unsmob<Pitch> (p)->transposed (Pitch (-scm_to_int (oct), 0));
                       pitches = scm_cons (orig.smobbed_copy (), pitches);
                     }
                   else
                     pitches = scm_cons (p, pitches);
-                  if (n->get_property ("inversion") == SCM_BOOL_T)
+                  if (to_boolean (n->get_property ("inversion")))
                     {
                       inversion = p;
                       if (!scm_is_number (oct))
@@ -143,14 +144,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 +167,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.",