+#include "time-scaled-music.hh"
+#include "beam.hh"
+#include "music-list.hh"
+#include "engraver.hh"
+#include "spanner.hh"
+
+class Tuplet_engraver : public Engraver
+{
+public:
+ TRANSLATOR_DECLARATIONS(Tuplet_engraver);
+
+protected:
+ Link_array<Music> time_scaled_musics_;
+ /// when does the scaled music stop? Array order is synced with time_scaled_musics_
+ Array<Rational> stop_moments_;
+ /// when does the current spanner stop? Array order is synced with time_scaled_musics_
+ Array<Rational> span_stop_moments_;
+
+ /// The spanners. Array order is synced with time_scaled_musics_
+ Link_array<Spanner> started_spanners_;
+
+ virtual void finalize ();
+ virtual void acknowledge_grob (Grob_info);
+ virtual bool try_music (Music*r);
+ virtual void start_translation_timestep ();
+ virtual void process_acknowledged_grobs ();
+};