/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
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 ());
+ }
+}
+
Staff_symbol_engraver::~Staff_symbol_engraver ()
{
- assert (!span_);
+ if (span_)
+ {
+ // Somehow finalize() was not called?
+ programming_error ("Have a pending spanner in destructor.");
+ }
}
Staff_symbol_engraver::Staff_symbol_engraver ()
finished_span_ = span_;
span_ = 0;
if (first_start_)
- first_start_ = false;
+ first_start_ = false;
}
if (span_events_[START]
{
span_ = make_spanner ("StaffSymbol", SCM_EOL);
span_->set_bound (LEFT,
- unsmob_grob (get_property ("currentCommandColumn")));
+ unsmob_grob (get_property ("currentCommandColumn")));
}
}
finished_span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
announce_end_grob (finished_span_,
- span_events_[STOP]
- ? span_events_[STOP]->self_scm ()
- : SCM_EOL);
+ span_events_[STOP]
+ ? span_events_[STOP]->self_scm ()
+ : SCM_EOL);
finished_span_ = 0;
}
ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob);
ADD_TRANSLATOR (Staff_symbol_engraver,
- /* doc */
- "Create the constellation of five (default) staff lines.",
+ /* doc */
+ "Create the constellation of five (default) staff lines.",
- /* create */
- "StaffSymbol ",
+ /* create */
+ "StaffSymbol ",
- /* read */
- "",
+ /* read */
+ "",
- /* write */
- ""
- );
+ /* write */
+ ""
+ );