+ Rhythmic_tuple const &h2)
+{
+ return (h1.end_ - h2.end_).main_part_.sign ();
+}
+
+/****************************************************************/
+
+/*
+ Acknowledge rhythmic elements, for initializing spacing fields in
+ the columns.
+*/
+class Spacing_engraver : public Engraver
+{
+ PQueue<Rhythmic_tuple> playing_durations_;
+ vector<Rhythmic_tuple> now_durations_;
+ vector<Rhythmic_tuple> stopped_durations_;
+ Moment now_;
+ Spanner *spacing_;
+ Stream_event *start_section_;
+
+ TRANSLATOR_DECLARATIONS (Spacing_engraver);
+
+protected:
+ void acknowledge_staff_spacing (Grob_info);
+ void acknowledge_note_spacing (Grob_info);
+ void acknowledge_rhythmic_head (Grob_info);
+ void acknowledge_rhythmic_grob (Grob_info);
+ void listen_spacing_section (Stream_event *);
+
+ void start_translation_timestep ();
+ void stop_translation_timestep ();
+ void process_music ();
+ void add_starter_duration (Grob_info i);
+
+ virtual void finalize ();
+
+ void start_spanner ();
+ void stop_spanner ();
+};
+
+Spacing_engraver::Spacing_engraver (Context *c)
+ : Engraver (c)