+ /* Recycle start/stop events if tupletSpannerDuration is set. */
+ SCM synthesized_events_;
+
+ Context_handle tuplet_handler_;
+};
+
+Music*
+Time_scaled_music_iterator::create_event (Direction d)
+{
+ SCM ev_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"),
+ ly_symbol2scm ("TupletSpanEvent"),
+ scm_from_int (d));
+
+ Music *mus = get_music ();
+
+ Music *ev = unsmob_music (ev_scm);
+ ev->set_spot (*mus->origin ());
+ if (d == START)
+ {
+ ev->set_property ("numerator", mus->get_property ("numerator"));
+ ev->set_property ("denominator", mus->get_property ("denominator"));
+ ev->set_property ("tweaks", mus->get_property ("tweaks"));
+ ev->set_property ("length", spanner_duration_.smobbed_copy ());
+ }
+
+ synthesized_events_ = scm_cons (ev_scm, synthesized_events_);
+ return ev;
+}
+
+
+Time_scaled_music_iterator::Time_scaled_music_iterator ()
+{
+ spanner_duration_ = next_split_mom_ = 0;
+ synthesized_events_ = SCM_EOL;
+}
+
+
+Moment
+Time_scaled_music_iterator::pending_moment () const
+{
+ Moment next_mom = Music_wrapper_iterator::pending_moment ();
+ next_mom = min (next_mom, next_split_mom_);
+
+ return next_mom;
+}