X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-iterator.cc;h=3d22831fbfa9ecec925e97be98e3b583a0144cb4;hb=3368751cb2eb1cb583adc6b7769ea0164c93d879;hp=b19215f51200ada13487995a5f22703123bdbd2d;hpb=59ed0cee2aae58a3f0483f21261c68aee406fa10;p=lilypond.git diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index b19215f512..3d22831fbf 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -8,10 +8,10 @@ #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 "sequential-music-iterator.hh" +#include "simultaneous-music-iterator.hh" #include "translator-group.hh" #include "translation-property.hh" #include "change-iterator.hh" @@ -20,16 +20,12 @@ #include "music-wrapper-iterator.hh" #include "compressed-music-iterator.hh" #include "compressed-music.hh" - - - -IMPLEMENT_IS_TYPE_B(Music_iterator); - +#include "repeated-music.hh" +#include "repeated-music-iterator.hh" void Music_iterator::do_print() const { - } void @@ -38,9 +34,9 @@ Music_iterator::print() const #ifndef NPRINT if (!check_debug) return ; - DOUT << name() << "{"; + DOUT << classname(this) << "{"; DOUT << "report to " << - report_to_l() << " (" << report_to_l ()->name () << ")\n"; + report_to_l() << " (" << classname (report_to_l ()) << ")\n"; if (ok()) DOUT << "next at " << next_moment() << " "; else @@ -136,20 +132,24 @@ Music_iterator* 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())) + if (dynamic_cast (m)) p = new Request_chord_iterator; - else if (m->is_type_b (Simultaneous_music::static_name())) + else if (dynamic_cast (m)) p = new Simultaneous_music_iterator; - else if (m->is_type_b (Sequential_music::static_name())) + else if (dynamic_cast (m)) p = new Sequential_music_iterator; - else if (m->is_type_b (Translation_property::static_name ())) + else if (dynamic_cast (m)) p = new Property_iterator; - else if (m->is_type_b (Change_translator::static_name ())) + else if (dynamic_cast (m)) p = new Change_iterator; - else if (m->is_type_b (Compressed_music::static_name ())) + else if (dynamic_cast (m)) p = new Compressed_music_iterator; - else if (m->is_type_b (Music_wrapper::static_name ())) + else if (dynamic_cast (m)) p = new Music_wrapper_iterator; + else if (dynamic_cast (m)) + p = new Repeated_music_iterator; + else + assert (0); p->music_l_ = m; if (m->translator_type_str_.length_i ()) @@ -166,16 +166,11 @@ Music_iterator::static_get_iterator_p (Music const *m, Translator_group *report_ return p; } -void -Music_iterator::inherit_info(Music_iterator const *parent) -{ -} Music_iterator* Music_iterator::get_iterator_p (Music const*m) const { Music_iterator*p = static_get_iterator_p (m, report_to_l()); - p->inherit_info (this); p->construct_children(); return p; }