X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flyric-combine-music-iterator.cc;h=035b83b7c8d05547b47158bebd952bf2288000b7;hb=acec5c037f53a163237c31486b84971aa33deaab;hp=639cbaae25e61e17b9b3f156a77f518633bef6ea;hpb=339ea28cd7e4f8a1c1ca7c1d4dfe803a3f4c03e6;p=lilypond.git diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index 639cbaae25..035b83b7c8 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999 Han-Wen Nienhuys + (c) 1999--2000 Han-Wen Nienhuys */ @@ -12,26 +12,34 @@ #include "lyric-combine-music.hh" #include "musical-request.hh" -Busy_playing_req busy_req; -Melisma_req melisma_start_req; -Melisma_req melisma_stop_req; -Melisma_playing_req melisma_playing_req; - +/* + Ugh, why static? + */ +Busy_playing_req *busy_req; +Melisma_req *melisma_start_req; +Melisma_req *melisma_stop_req; +Melisma_playing_req * melisma_playing_req; Lyric_combine_music_iterator::Lyric_combine_music_iterator () { - melisma_start_req.span_dir_ = START; - melisma_stop_req.span_dir_ = STOP; + if (!busy_req) + { + busy_req = new Busy_playing_req; + melisma_playing_req = new Melisma_playing_req; + melisma_stop_req = new Melisma_req; + melisma_start_req = new Melisma_req; + } + melisma_start_req->span_dir_ = START; + melisma_stop_req->span_dir_ = STOP; - melisma_started_b_ = false; music_iter_p_ =0; lyric_iter_p_ =0; } Moment -Lyric_combine_music_iterator::next_moment () const +Lyric_combine_music_iterator::pending_moment () const { - Moment musnext = music_iter_p_->next_moment (); + Moment musnext = music_iter_p_->pending_moment (); return musnext; } @@ -41,12 +49,6 @@ Lyric_combine_music_iterator::ok () const return music_iter_p_->ok (); } -void -Lyric_combine_music_iterator::do_print () const -{ - music_iter_p_->print (); - lyric_iter_p_->print (); -} void Lyric_combine_music_iterator::construct_children () @@ -58,37 +60,36 @@ Lyric_combine_music_iterator::construct_children () } void -Lyric_combine_music_iterator::do_process_and_next (Moment m) +Lyric_combine_music_iterator::process (Moment m) { - Moment my_next = music_iter_p_->next_moment (); + Moment my_next = music_iter_p_->pending_moment (); if (my_next > m) return; - music_iter_p_->process_and_next (m); + music_iter_p_->process (m); - bool busy = try_music (&busy_req); + bool busy = try_music (busy_req); if (busy) { - bool melisma_b = try_music (&melisma_playing_req); - if (!melisma_started_b_ || !melisma_b) + bool melisma_b = try_music (melisma_playing_req); + if (!melisma_b) { if (lyric_iter_p_->ok ()) { + // FIXME +#if 0 // devise a new way for this if (melisma_b && !melisma_started_b_) - lyric_iter_p_->try_music (&melisma_start_req); + lyric_iter_p_->try_music (melisma_start_req); else if (melisma_started_b_) - lyric_iter_p_->try_music (&melisma_stop_req); - - Moment m= lyric_iter_p_->next_moment (); - lyric_iter_p_->process_and_next (m); + lyric_iter_p_->try_music (melisma_stop_req); +#endif + + Moment m= lyric_iter_p_->pending_moment (); + lyric_iter_p_->process (m); } } - melisma_started_b_ = melisma_b; } - - - Music_iterator::do_process_and_next (m); } Lyric_combine_music_iterator::~Lyric_combine_music_iterator () @@ -98,7 +99,7 @@ Lyric_combine_music_iterator::~Lyric_combine_music_iterator () } Music_iterator* -Lyric_combine_music_iterator::try_music_in_children (Music const *m) const +Lyric_combine_music_iterator::try_music_in_children (Music *m) const { Music_iterator * i = music_iter_p_->try_music (m); if (i)