X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-iterator.cc;h=2b329815d6596e4ee5ddc89f89f165cffc2cce7a;hb=refs%2Ftags%2Frelease%2F1.0.17;hp=a26231c0a97df73663b6672e5c54a5a50ef40fec;hpb=6bc0a8a090e82c4bce57df8e980b48cc78cb422b;p=lilypond.git diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index a26231c0a9..2b329815d6 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "debug.hh" #include "music-list.hh" @@ -16,9 +16,11 @@ #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,8 +113,15 @@ Music_iterator::next_moment() const return 0; } + +void +Music_iterator::process_and_next (Moment m) +{ + do_process_and_next (m); +} + void -Music_iterator::process_and_next (Moment) +Music_iterator::do_process_and_next (Moment) { first_b_ = false; } @@ -124,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); - else if (m->is_type_b (Chord::static_name())) - p = new Chord_iterator ((Chord*) m); - else if (m->is_type_b (Voice::static_name())) - p = new Voice_iterator ((Voice*) m); + p = new Request_chord_iterator; + else if (m->is_type_b (Simultaneous_music::static_name())) + p = new Simultaneous_music_iterator; + else if (m->is_type_b (Sequential_music::static_name())) + 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 *) +{ +} + 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; }