X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsimple-music-iterator.cc;h=0497ef770c78df79c8fd38fcfcdeef1fc26affed;hb=ee9d99190ecd2a054322eabca66b1e0c2507474f;hp=b185f8ac24b6c97cb0532ba0a49aa138b9947222;hpb=76fc550ad24948eb3615ac2da52e22500d092e23;p=lilypond.git diff --git a/lily/simple-music-iterator.cc b/lily/simple-music-iterator.cc index b185f8ac24..0497ef770c 100644 --- a/lily/simple-music-iterator.cc +++ b/lily/simple-music-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2000 Han-Wen Nienhuys + (c) 2000--2002 Han-Wen Nienhuys */ @@ -21,51 +21,53 @@ Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src) : Music_iterator (src) { last_processed_mom_ = src.last_processed_mom_; - length_mom_ = src.length_mom_; -} - -void -Simple_music_iterator::construct_children () -{ - length_mom_ = music_l_->length_mom (); } bool Simple_music_iterator::ok ()const { - return last_processed_mom_ < length_mom_; + return last_processed_mom_ < music_length_mom (); } +/* + TODO: remove last_processed_mom_, and the complete shit. We should + only process a simple-music once, and that is at its start. + + Engravers can detect and request the end-moments to be processed as + well. + +*/ Moment Simple_music_iterator::pending_moment ()const { - if (music_l_) + if (last_processed_mom_ < Moment (0)) return Moment (0); else - return length_mom_; + return music_length_mom (); } void Simple_music_iterator::skip (Moment m) { - music_l_ = 0; + /* + docme??!! + + uncommented because setting MUSIC_L_ = 0 causes core dumps with + grace notes. */ + + // music_l_ = 0; + last_processed_mom_ = m; } void Simple_music_iterator::process (Moment m) { -#if 0 /* - try_music () causes trouble for base classes - */ - if (music_l_) - { - bool b = try_music (music_l_); - if (!b) - music_l_->origin ()->warning (_f ("Junking music: `%s'", - classname (music_l_))); - } -#endif + don't do try_music (), since it would make the function useless for + base classes */ + skip (m); } + +IMPLEMENT_CTOR_CALLBACK (Simple_music_iterator);