]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/change-iterator.cc
*** empty log message ***
[lilypond.git] / lily / change-iterator.cc
index 730e4adc8e3cb241ab121e0b302dabcdca7d7025..b07781ebcb9edcb3f729be2def1a5822810fd1ef 100644 (file)
@@ -3,58 +3,58 @@
 
   source file of the GNU LilyPond music typesetter
 
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "change-iterator.hh"
 #include "translator-group.hh"
 */
 
 #include "change-iterator.hh"
 #include "translator-group.hh"
-#include "change-translator.hh"
-#include "debug.hh"
+#include "music.hh"
+#include "warn.hh"
+
 
 
 void
 Change_iterator::error (String reason)
 {
 
 
 void
 Change_iterator::error (String reason)
 {
-  Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_);   
-  String to_type = t->change_to_type_str_;
-  String to_id =  t->change_to_id_str_;
+  String to_type = ly_scm2string (get_music ()->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (get_music ()->get_mus_property ("change-to-id"));
 
   String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) 
     + ": " + reason;
   /*
     GUHG!
    */
 
   String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) 
     + ": " + reason;
   /*
     GUHG!
    */
-  String warn2= "Change_iterator::do_process_and_next (): " 
-    + report_to_l ()->type_str_ + " = `"
-    + report_to_l ()->id_str_ + "': ";
+  String warn2= "Change_iterator::process (): " 
+    + report_to ()->type_string_ + " = `"
+    + report_to ()->id_string_ + "': ";
   warning (warn2);
   warning (warn2);
-  t->origin ()->warning (warn1);
+  get_music ()->origin ()->warning (warn1);
 }
 
 /*
   move to construct_children ?
  */
 void
 }
 
 /*
   move to construct_children ?
  */
 void
-Change_iterator::do_process_and_next (Moment m)
+Change_iterator::process (Moment m)
 {
 {
-  Translator_group * current = report_to_l ();
+  Translator_group * current = report_to ();
   Translator_group * last = 0;
 
   Translator_group * last = 0;
 
-  Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_); 
-  String to_type = t->change_to_type_str_;
-  String to_id =  t->change_to_id_str_;
+  String to_type = ly_scm2string (get_music ()->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (get_music ()->get_mus_property ("change-to-id"));
+
 
   /* find the type  of translator that we're changing.
      
      If \translator Staff = bass, then look for Staff = *
    */
 
   /* find the type  of translator that we're changing.
      
      If \translator Staff = bass, then look for Staff = *
    */
-  while  (current && current->type_str_ != to_type)
+  while (current && current->type_string_ != to_type)
     {
       last = current;
     {
       last = current;
-      current = current->daddy_trans_l_;
+      current = current->daddy_trans_;
     }
 
     }
 
-  if (current && current->id_str_ == to_id)
+  if (current && current->id_string_ == to_id)
     {
       String msg;
       msg += _ ("Can't switch translators, I'm there already");
     {
       String msg;
       msg += _ ("Can't switch translators, I'm there already");
@@ -64,9 +64,9 @@ Change_iterator::do_process_and_next (Moment m)
     if (last)
       {
        Translator_group * dest = 
     if (last)
       {
        Translator_group * dest = 
-         report_to_l ()->find_create_translator_l (to_type, to_id);
-       current->remove_translator_p (last);
-       dest->add_group_translator (last);
+         report_to ()->find_create_translator (to_type, to_id);
+       current->remove_translator (last);
+       dest->add_used_group_translator (last);
       }
     else
       {
       }
     else
       {
@@ -74,13 +74,15 @@ Change_iterator::do_process_and_next (Moment m)
          We could change the current translator's id, but that would make 
          errors hard to catch
          
          We could change the current translator's id, but that would make 
          errors hard to catch
          
-          last->translator_id_str_  = change_l ()->change_to_id_str_;
+          last->translator_id_string_  = get_change ()->change_to_id_string_;
        */
        error (_ ("I'm one myself"));
       }
   else
     error (_ ("none of these in my family"));
        */
        error (_ ("I'm one myself"));
       }
   else
     error (_ ("none of these in my family"));
-  Music_iterator::do_process_and_next (m);
+  Simple_music_iterator::process (m);
 }
 
 
 }
 
 
+
+IMPLEMENT_CTOR_CALLBACK (Change_iterator);