]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/music-iterator.cc
release: 1.0.1
[lilypond.git] / lily / music-iterator.cc
index ef36b59d149a2f552e0ed5cb475d4e05c94c459c..97352020af20712f53b0566f4e7d7d0fe54ae7cd 100644 (file)
@@ -3,15 +3,22 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "music-list.hh"
 #include "music-iterator.hh"
 #include "voice-iterator.hh"
+#include "property-iterator.hh"
 #include "chord-iterator.hh"
 #include "request-iterator.hh"
-#include "translator.hh"
+#include "translator-group.hh"
+#include "translation-property.hh"
+#include "change-iterator.hh"
+#include "change-translator.hh"
+
+#include "music-wrapper.hh"
+#include "music-wrapper-iterator.hh"
 
 
 IMPLEMENT_IS_TYPE_B(Music_iterator);
@@ -41,11 +48,11 @@ Music_iterator::print() const
 #endif
 }
 
-Translator *
+Translator_group*
 Music_iterator::get_req_translator_l()
 {
   assert (report_to_l());
-  if (report_to_l()->is_bottom_engraver_b ())
+  if (report_to_l()->is_bottom_translator_b ())
     return report_to_l();
 
   set_translator (report_to_l()->get_default_interpreter ());
@@ -53,7 +60,7 @@ Music_iterator::get_req_translator_l()
 }
 
 void
-Music_iterator::push_translator (Translator*t)
+Music_iterator::push_translator (Translator_group*t)
 {
   report_to_l_arr_.push (t);
   t->iterator_count_ ++;
@@ -67,7 +74,7 @@ Music_iterator::pop_translator()
   report_to_l_arr_.pop();
 }
 
-Translator* 
+Translator_group
 Music_iterator::report_to_l() const
 {
   if (! report_to_l_arr_.size())
@@ -77,7 +84,7 @@ Music_iterator::report_to_l() const
 
 
 void
-Music_iterator::set_translator (Translator*trans)
+Music_iterator::set_translator (Translator_group*trans)
 {   
   if (report_to_l()==trans)
     return;
@@ -110,6 +117,7 @@ Music_iterator::process_and_next (Moment)
   first_b_ = false;
 }
 
+
 bool
 Music_iterator::ok() const
 {
@@ -118,7 +126,7 @@ Music_iterator::ok() const
 
 Music_iterator*
 Music_iterator::static_get_iterator_p (Music *m,
-                                      Translator *report_l)
+                                      Translator_group*report_l)
 {
   Music_iterator * p =0;
   if (m->is_type_b (Request_chord::static_name()))
@@ -127,15 +135,21 @@ Music_iterator::static_get_iterator_p (Music *m,
     p =  new Chord_iterator ((Chord*) m);
   else if (m->is_type_b (Voice::static_name())) 
     p =  new Voice_iterator ((Voice*) m);
+  else if (m->is_type_b (Translation_property::static_name ()))
+    p = new Property_iterator((Translation_property *) m);
+  else if (m->is_type_b (Change_translator::static_name ()))
+    p = new Change_iterator((Change_translator*) m);
+  else if (m->is_type_b (Music_wrapper::static_name ()))
+    p = new Music_wrapper_iterator ((Music_wrapper *)m);
+          
   
-  if (m -> type_str_ != "") 
+  if (m -> translator_type_str_.length_i ())
     {
-      Translator * a =report_l->
-       find_get_translator_l (m-> type_str_, m->id_str_);
+      Translator_group* a =report_l->
+       find_create_translator_l (m-> translator_type_str_, m->translator_id_str_);
       p->set_translator (a);
     }
 
-
   if (! p->report_to_l())
     p ->set_translator (report_l);
   
@@ -157,3 +171,4 @@ Music_iterator::Music_iterator()
   first_b_ = true;
 }
 
+