X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-wrapper-iterator.cc;h=428cac5a623a3a0308070a205bc938e41ec9ffa9;hb=1ed3ca1ad8893fc2cb76aa67a0830bcf52e2502c;hp=13b2a90c31dacebe3749b245ecba110ff80dbd9b;hpb=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;p=lilypond.git diff --git a/lily/music-wrapper-iterator.cc b/lily/music-wrapper-iterator.cc index 13b2a90c31..428cac5a62 100644 --- a/lily/music-wrapper-iterator.cc +++ b/lily/music-wrapper-iterator.cc @@ -1,58 +1,78 @@ /* - music-wrapper-iterator.cc -- implement + music-wrapper-iterator.cc -- implement Music_wrapper_iterator source file of the GNU LilyPond music typesetter - (c) 1998 Han-Wen Nienhuys - + (c) 1998--2004 Han-Wen Nienhuys */ #include "music-wrapper-iterator.hh" #include "music-wrapper.hh" -Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper *r) +Music_wrapper_iterator::Music_wrapper_iterator () { - child_iter_p_ =0; - music_l_ = r; + child_iter_ =0; } -IMPLEMENT_IS_TYPE_B1(Music_wrapper_iterator, Music_iterator); - void -Music_wrapper_iterator::do_print () const +Music_wrapper_iterator::do_quit () { - child_iter_p_->print (); + child_iter_->quit (); } void -Music_wrapper_iterator::construct_children () +Music_wrapper_iterator::derived_mark () const { - child_iter_p_ = get_iterator_p (music_l_->element_p_); + if (child_iter_) + scm_gc_mark (child_iter_->self_scm ()); } -Music_wrapper_iterator::~Music_wrapper_iterator () +void +Music_wrapper_iterator::derived_substitute (Context *f,Context *t) { - delete child_iter_p_; + + if (child_iter_) + child_iter_->substitute_outlet (f,t); } +void +Music_wrapper_iterator::construct_children () +{ + Music * m = dynamic_cast (get_music ())-> element (); + child_iter_ = unsmob_iterator (get_iterator (m)); +} bool Music_wrapper_iterator::ok () const { - return child_iter_p_->ok (); + return child_iter_ && child_iter_->ok (); } + void -Music_wrapper_iterator::process_and_next (Moment m) +Music_wrapper_iterator::process (Moment m) { - child_iter_p_->process_and_next (m); - Music_iterator::process_and_next (m); + child_iter_->process (m); } + Moment -Music_wrapper_iterator::next_moment () const +Music_wrapper_iterator::pending_moment () const +{ + return child_iter_->pending_moment (); +} + +Music_iterator* +Music_wrapper_iterator::try_music_in_children (Music *m) const { - return child_iter_p_->next_moment (); + return child_iter_->try_music (m); } +IMPLEMENT_CTOR_CALLBACK (Music_wrapper_iterator); + +bool +Music_wrapper_iterator::run_always () const +{ + return child_iter_->run_always (); +}