+Staff_symbol_engraver::~Staff_symbol_engraver ()
+{
+ if (span_)
+ {
+ // Somehow finalize() was not called?
+ programming_error ("Have a pending spanner in destructor.");
+ }
+}
+
+Staff_symbol_engraver::Staff_symbol_engraver ()
+{
+ finished_span_ = 0;
+ first_start_ = true;
+ span_ = 0;
+ span_events_.set (0, 0);
+}
+
+IMPLEMENT_TRANSLATOR_LISTENER (Staff_symbol_engraver, staff_span);
+void
+Staff_symbol_engraver::listen_staff_span (Stream_event *ev)
+{
+ Direction d = to_dir (ev->get_property ("span-direction"));
+ if (d)
+ ASSIGN_EVENT_ONCE (span_events_[d], ev);
+ else
+ programming_error ("staff-span event has no direction");
+}