X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fchord-tremolo-iterator.cc;h=36e8697426e4b6d00e25adff55d545aad73c0dc7;hb=7e7a2bf8bde2353decd68a9c4ac7a68d815e8185;hp=7cec33c3026daaa5d33fbb5b0fd942e1a9291988;hpb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;p=lilypond.git diff --git a/lily/chord-tremolo-iterator.cc b/lily/chord-tremolo-iterator.cc index 7cec33c302..36e8697426 100644 --- a/lily/chord-tremolo-iterator.cc +++ b/lily/chord-tremolo-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2000--2002 Han-Wen Nienhuys + (c) 2000--2004 Han-Wen Nienhuys */ @@ -13,16 +13,17 @@ subclassing proved to be too difficult. */ -#include "input.hh" #include "chord-tremolo-iterator.hh" + +#include "input.hh" #include "repeated-music.hh" void Chord_tremolo_iterator::construct_children () { Repeated_music * rep = dynamic_cast (get_music ()); - factor_ = Moment (Rational(1, 1)); - child_iter_ = get_iterator (rep->body ()); + factor_ = Moment (Rational (1, 1)); + child_iter_ = unsmob_iterator (get_iterator (rep->body ())); } Chord_tremolo_iterator::Chord_tremolo_iterator () @@ -31,11 +32,25 @@ Chord_tremolo_iterator::Chord_tremolo_iterator () child_iter_ = 0; } -Chord_tremolo_iterator::Chord_tremolo_iterator (Chord_tremolo_iterator const &src) - : Music_iterator (src) +void +Chord_tremolo_iterator::do_quit () { - factor_ = src.factor_; - child_iter_ = src.child_iter_ ? src.child_iter_->clone () : 0; + if (child_iter_) + child_iter_->quit (); +} + +void +Chord_tremolo_iterator::derived_mark () const +{ + if (child_iter_) + scm_gc_mark (child_iter_->self_scm ()); +} + +void +Chord_tremolo_iterator::derived_substitute (Context *f, Context *t) +{ + if (child_iter_) + child_iter_->substitute_outlet (f,t); } void @@ -45,7 +60,7 @@ Chord_tremolo_iterator::process (Moment m) { Music_iterator *yeah = try_music (get_music ()); if (yeah) - set_translator (yeah->report_to ()); + set_context (yeah->get_outlet ()); else get_music ()->origin ()->warning (_ ("no one to print a tremolos")); } @@ -65,18 +80,11 @@ Chord_tremolo_iterator::ok () const return child_iter_ && child_iter_->ok (); } -Chord_tremolo_iterator::~Chord_tremolo_iterator () -{ - delete child_iter_; -} - Music_iterator* Chord_tremolo_iterator::try_music_in_children (Music *m) const { return child_iter_->try_music (m); } - - IMPLEMENT_CTOR_CALLBACK (Chord_tremolo_iterator);