]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/music-iterator.cc
release: 1.0.15
[lilypond.git] / lily / music-iterator.cc
index 81622368a49782bf5e63d041d8da7058f4dd266e..b19215f51200ada13487995a5f22703123bdbd2d 100644 (file)
 #include "translation-property.hh"
 #include "change-iterator.hh"
 #include "change-translator.hh"
-
 #include "music-wrapper.hh"
 #include "music-wrapper-iterator.hh"
+#include "compressed-music-iterator.hh"
+#include "compressed-music.hh"
+
 
 
 IMPLEMENT_IS_TYPE_B(Music_iterator);
@@ -111,12 +113,18 @@ Music_iterator::next_moment() const
   return 0;
 }
 
+
 void
-Music_iterator::process_and_next (Moment)
+Music_iterator::process_and_next (Moment m)
 {
-  first_b_ = false;
+  do_process_and_next (m);
 }
 
+void
+Music_iterator::do_process_and_next (Moment)
+{
+  first_b_ = false;
+}
 
 bool
 Music_iterator::ok() const
@@ -125,49 +133,55 @@ Music_iterator::ok() const
 }
 
 Music_iterator*
-Music_iterator::static_get_iterator_p (Music *m,
-                                      Translator_group*report_l)
+Music_iterator::static_get_iterator_p (Music const *m, Translator_group *report_l)
 {
   Music_iterator * p =0;
   if (m->is_type_b (Request_chord::static_name()))
-    p = new Request_chord_iterator ((Request_chord*) m);
+    p = new Request_chord_iterator;
   else if (m->is_type_b (Simultaneous_music::static_name())) 
-    p =  new Simultaneous_music_iterator ((Simultaneous_music*) m);
+    p =  new Simultaneous_music_iterator;
   else if (m->is_type_b (Sequential_music::static_name())) 
-    p =  new Sequential_music_iterator ((Sequential_music*) m);
+    p =  new Sequential_music_iterator;
   else if (m->is_type_b (Translation_property::static_name ()))
-    p = new Property_iterator((Translation_property *) m);
+    p = new Property_iterator;
   else if (m->is_type_b (Change_translator::static_name ()))
-    p = new Change_iterator((Change_translator*) m);
+    p = new Change_iterator;
+  else if (m->is_type_b (Compressed_music::static_name ()))
+    p = new Compressed_music_iterator;
   else if (m->is_type_b (Music_wrapper::static_name ()))
-    p = new Music_wrapper_iterator ((Music_wrapper *)m);
-          
-  
-  if (m -> translator_type_str_.length_i ())
+    p = new Music_wrapper_iterator;
+
+  p->music_l_ = m;
+  if (m->translator_type_str_.length_i ())
     {
       Translator_group* a =report_l->
-       find_create_translator_l (m-> translator_type_str_, m->translator_id_str_);
+       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);
+
   
   return p;
 }
 
+void
+Music_iterator::inherit_info(Music_iterator const *parent)
+{
+}
+
 Music_iterator*
-Music_iterator::get_iterator_p (Music*m) const
+Music_iterator::get_iterator_p (Music const*m) const
 {
-  Music_iterator*p = static_get_iterator_p (m,report_to_l());
-  p->daddy_iter_l_ = (Music_iterator*)this;
+  Music_iterator*p = static_get_iterator_p (m, report_to_l());
+  p->inherit_info (this);
   p->construct_children();
   return p;
 }
 
 Music_iterator::Music_iterator()
 {
-  daddy_iter_l_ =0;
   first_b_ = true;
 }