+#include "stream-event.hh"
+#include "warn.hh"
+
+#include "translator.icc"
+
+class Staff_symbol_engraver : public Engraver
+{
+public:
+ TRANSLATOR_DECLARATIONS (Staff_symbol_engraver);
+
+protected:
+ Drul_array<Stream_event *> span_events_;
+ Spanner *span_;
+ Spanner *finished_span_;
+ bool first_start_;
+
+protected:
+ virtual void start_spanner ();
+ virtual void stop_spanner ();
+
+ void stop_translation_timestep ();
+ virtual ~Staff_symbol_engraver ();
+ DECLARE_ACKNOWLEDGER (grob);
+ DECLARE_TRANSLATOR_LISTENER (staff_span);
+ virtual void finalize ();
+ void process_music ();
+ virtual void derived_mark () const;
+};
+
+void
+Staff_symbol_engraver::derived_mark () const
+{
+ for (LEFT_and_RIGHT (d))
+ {
+ if (span_events_[d])
+ scm_gc_mark (span_events_[d]->self_scm ());
+ }
+}