X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-engraver.cc;h=4a6c555d9610a3407e76e03089acf5d564192ce8;hb=d445cda01e4d86896f55fd1cf2ccbaba8cb7917a;hp=5d8b0107df85e5a4a3093998ef334fcbd0b5ae44;hpb=811be522d0b79493159f47789e5621dc85493495;p=lilypond.git diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index 5d8b0107df..4a6c555d96 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2000--2005 Han-Wen Nienhuys + (c) 2000--2006 Han-Wen Nienhuys */ #include "engraver.hh" @@ -14,6 +14,7 @@ #include "side-position-interface.hh" #include "warn.hh" #include "staff-symbol.hh" +#include "text-interface.hh" #include "translator.icc" @@ -30,9 +31,9 @@ protected: DECLARE_ACKNOWLEDGER (staff_symbol); DECLARE_ACKNOWLEDGER (note_column); DECLARE_ACKNOWLEDGER (bar_line); - - virtual void finalize (); + virtual void finalize (); + virtual void derived_mark () const; void stop_translation_timestep (); void process_music (); @@ -45,9 +46,17 @@ protected: bool staff_eligible (); }; +void +Volta_engraver::derived_mark () const +{ + scm_gc_mark (staff_); + scm_gc_mark (start_string_); +} + Volta_engraver::Volta_engraver () { staff_ = SCM_EOL; + start_string_ = SCM_EOL; volta_span_ = 0; end_volta_span_ = 0; } @@ -64,9 +73,7 @@ Volta_engraver::staff_eligible () { SCM doit = get_property ("voltaOnThisStaff"); if (scm_is_bool (doit)) - { - return to_boolean (doit); - } + return to_boolean (doit); if (!unsmob_grob (staff_)) return false; @@ -154,7 +161,7 @@ Volta_engraver::process_music () } if (!volta_span_ - && (scm_is_string (start_string_) || scm_is_pair (start_string_))) + && Text_interface::is_markup (start_string_)) { started_mom_ = now_mom (); @@ -168,7 +175,7 @@ void Volta_engraver::acknowledge_note_column (Grob_info i) { if (volta_span_) - Volta_bracket_interface::add_column (volta_span_, i.grob()); + Volta_bracket_interface::add_column (volta_span_, i.grob ()); } void @@ -179,7 +186,7 @@ Volta_engraver::acknowledge_bar_line (Grob_info i) if (end_volta_span_) Volta_bracket_interface::add_bar (end_volta_span_, i.item ()); } - + void Volta_engraver::acknowledge_staff_symbol (Grob_info i) { @@ -238,8 +245,8 @@ ADD_ACKNOWLEDGER (Volta_engraver, staff_symbol); ADD_ACKNOWLEDGER (Volta_engraver, note_column); ADD_ACKNOWLEDGER (Volta_engraver, bar_line); ADD_TRANSLATOR (Volta_engraver, - /* descr */ "Make volta brackets.", - /* creats*/ "VoltaBracket", - /* accepts */ "", - /* reads */ "repeatCommands voltaSpannerDuration stavesFound", + /* doc */ "Make volta brackets.", + /* create */ "VoltaBracket", + /* accept */ "", + /* read */ "repeatCommands voltaSpannerDuration stavesFound", /* write */ "");