X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffolded-repeat-iterator.cc;h=17ef87275e1dc2d17342e8326790760253c9321d;hb=1bba302abc6b79d82a822a6a1803e8bb0e0225a0;hp=cf9b5438edbdddb37e277c8e90ff222ead814389;hpb=c659cb200486c2f908703696a1b2873e78c8160a;p=lilypond.git diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc index cf9b5438ed..17ef87275e 100644 --- a/lily/folded-repeat-iterator.cc +++ b/lily/folded-repeat-iterator.cc @@ -1,17 +1,15 @@ -/* - folded-repeat-iterator.cc -- implement Folded_repeat_iterator - +/* + folded-repeat-iterator.cc -- implement Folded_repeat_iterator + source file of the GNU LilyPond music typesetter - - (c) 1999--2004 Han-Wen Nienhuys - - */ + + (c) 1999--2005 Han-Wen Nienhuys +*/ #include "folded-repeat-iterator.hh" #include "input.hh" #include "repeated-music.hh" -#include "music-list.hh" #include "simultaneous-music-iterator.hh" #include "context.hh" @@ -37,9 +35,7 @@ Moment Folded_repeat_iterator::pending_moment () const { if (main_iter_) - { - return main_iter_->pending_moment (); - } + return main_iter_->pending_moment (); else return main_length_mom_ + alternative_iter_->pending_moment (); } @@ -47,8 +43,8 @@ Folded_repeat_iterator::pending_moment () const void Folded_repeat_iterator::construct_children () { - Repeated_music * mus = dynamic_cast (get_music ()); - main_iter_ = unsmob_iterator (get_iterator (mus->body ())); + Music *mus = get_music (); + main_iter_ = unsmob_iterator (get_iterator (Repeated_music::body (mus))); if (!main_iter_->ok ()) { leave_body (); @@ -59,13 +55,13 @@ Folded_repeat_iterator::construct_children () void Folded_repeat_iterator::process (Moment m) { - if (!m.to_bool () ) + if (!m.to_bool ()) { bool success = try_music (get_music ()); if (!success) get_music ()->origin ()->warning (_ ("no one to print a repeat brace")); } - + if (main_iter_) { main_iter_->process (m); @@ -74,17 +70,15 @@ Folded_repeat_iterator::process (Moment m) } if (!main_iter_ && !alternative_iter_) - { - enter_alternative (); - } - + enter_alternative (); + if (alternative_iter_) { alternative_iter_->process (m - main_length_mom_); if (!alternative_iter_->ok ()) { alternative_iter_->quit (); - alternative_iter_ =0; + alternative_iter_ = 0; } } } @@ -92,47 +86,44 @@ Folded_repeat_iterator::process (Moment m) void Folded_repeat_iterator::leave_body () { - Repeated_music * mus = dynamic_cast (get_music ()); + Music *mus = get_music (); main_iter_->quit (); main_iter_ = 0; - main_length_mom_ += mus->body ()->get_length (); + main_length_mom_ += Repeated_music::body (mus)->get_length (); } void Folded_repeat_iterator::enter_alternative () { - Repeated_music * mus = dynamic_cast (get_music ()); - if (mus->alternatives ()) + Music *mus = get_music (); + if (scm_is_pair (Repeated_music::alternatives (mus))) { /* ugh. - */ - Simultaneous_music_iterator * s = new Simultaneous_music_iterator; + */ + Simultaneous_music_iterator *s = new Simultaneous_music_iterator; s->create_separate_contexts_ = true; s->init_translator (mus, get_outlet ()); - + alternative_iter_ = s; alternative_iter_->construct_children (); - scm_gc_unprotect_object (s->self_scm ()); + s->unprotect (); } } - -Music_iterator* -Folded_repeat_iterator::try_music_in_children (Music * m) const +Music_iterator * +Folded_repeat_iterator::try_music_in_children (Music *m) const { if (main_iter_) - { - return main_iter_->try_music (m); - } + return main_iter_->try_music (m); if (alternative_iter_) return alternative_iter_->try_music (m); return 0; } void -Folded_repeat_iterator::derived_mark ()const +Folded_repeat_iterator::derived_mark () const { if (main_iter_) scm_gc_mark (main_iter_->self_scm ()); @@ -141,12 +132,12 @@ Folded_repeat_iterator::derived_mark ()const } void -Folded_repeat_iterator::derived_substitute (Context *f, Context *t) +Folded_repeat_iterator::derived_substitute (Context *f, Context *t) { if (main_iter_) - main_iter_->substitute_outlet (f,t); + main_iter_->substitute_outlet (f, t); if (alternative_iter_) - alternative_iter_->substitute_outlet (f,t); + alternative_iter_->substitute_outlet (f, t); } IMPLEMENT_CTOR_CALLBACK (Folded_repeat_iterator);