+#include "context.hh"
+#include "directional-element-interface.hh"
+#include "engraver.hh"
+#include "spanner.hh"
+#include "tie.hh"
+
+/*
+ It is possible that a slur starts and ends on the same note. At
+ least, it is for phrasing slurs: a note can be both beginning and
+ ending of a phrase.
+*/
+
+class Slur_engraver : public Engraver
+{
+ Drul_array<Music *> events_;
+ Music *running_slur_start_;
+ Link_array<Grob> slurs_;
+ Link_array<Grob> end_slurs_;
+
+ void set_melisma (bool);
+
+protected:
+ virtual bool try_music (Music *);
+ virtual void acknowledge_grob (Grob_info);
+ virtual void stop_translation_timestep ();
+ virtual void finalize ();
+ virtual void process_music ();
+
+public:
+ TRANSLATOR_DECLARATIONS (Slur_engraver);
+};
+
+Slur_engraver::Slur_engraver ()
+{
+ events_[START] = events_[STOP] = 0;
+}