X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fquote-iterator.cc;h=2eecb72fe4c930a20f994a0b6d8d58f7c262861e;hb=0d7ea6bb98090cf75b9b77e70785d1add1a8363c;hp=ab7a206ce1a7b90aab03fbb76bd70975c6778a90;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/quote-iterator.cc b/lily/quote-iterator.cc index ab7a206ce1..2eecb72fe4 100644 --- a/lily/quote-iterator.cc +++ b/lily/quote-iterator.cc @@ -7,18 +7,19 @@ */ #include "context.hh" -#include "event.hh" +#include "music.hh" #include "music-sequence.hh" #include "lily-guile.hh" #include "music-wrapper-iterator.hh" #include "warn.hh" +#include "input.hh" class Quote_iterator : public Music_wrapper_iterator { public: Quote_iterator (); Moment vector_moment (int idx) const; - Interpretation_context_handle quote_outlet_; + Context_handle quote_outlet_; Moment start_moment_; Moment stop_moment_; @@ -31,14 +32,23 @@ public: DECLARE_SCHEME_CALLBACK (constructor, ()); bool quote_ok () const; bool accept_music_type (Music *) const; + protected: virtual void derived_mark () const; virtual void construct_children (); virtual Moment pending_moment () const; virtual void process (Moment); + virtual void do_quit (); virtual bool ok () const; }; +void +Quote_iterator::do_quit () +{ + Music_wrapper_iterator::do_quit (); + quote_outlet_.set_context (0); +} + bool Quote_iterator::accept_music_type (Music *mus) const { @@ -56,6 +66,7 @@ Quote_iterator::accept_music_type (Music *mus) const void Quote_iterator::derived_mark () const { + Music_wrapper_iterator::derived_mark (); scm_gc_mark (transposed_musics_); } @@ -106,9 +117,7 @@ Quote_iterator::construct_children () quote_outlet_.set_context (cue_context); } else - { - quote_outlet_.set_context (get_outlet ()); - } + quote_outlet_.set_context (get_outlet ()); event_vector_ = get_music ()->get_property ("quoted-events"); @@ -149,14 +158,14 @@ Quote_iterator::pending_moment () const Moment m (infty); if (Music_wrapper_iterator::ok ()) - m = m try_music (mus); if (!b) - mus->origin ()->warning (_f ("In quotation: junking event %s", mus->name ())); + mus->origin ()->warning (_f ("in quotation: junking event %s", + mus->name ())); } }