have to protect even those unlikely-to-be-corrupted data members.
+2005-08-04 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * lily/auto-beam-engraver.cc (derived_mark): new method. Yes. We
+ have to protect even those unlikely-to-be-corrupted data members.
+
2005-08-03 Mats Bengtsson <mabe@drongo.s3.kth.se>
* Documentation/user/lilypond-book.itely (An example of a
Bruce Fairchild
Daniel Johnson
David Rogers
+Donald Axel
Dylan Nicholson
Ed Jackson
Erik Ronström
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=6
-PATCH_LEVEL=2
+PATCH_LEVEL=3
MY_PATCH_LEVEL=
virtual void finalize ();
virtual void acknowledge_grob (Grob_info);
virtual void process_acknowledged_grobs ();
+ virtual void derived_mark () const;
private:
bool test_moment (Direction, Moment);
// We act as if beam were created, and start a grouping anyway.
Beaming_info_list *grouping_;
- SCM beam_settings_; // ugh. should protect ?
+ SCM beam_settings_;
Beaming_info_list *finished_grouping_;
};
+void
+Auto_beam_engraver::derived_mark () const
+{
+ scm_gc_mark (beam_settings_);
+}
+
+
void
Auto_beam_engraver::process_music ()
{
if (to_boolean (get_property ("skipTypesetting")))
return 0;
- Spanner *beam = new Spanner (beam_settings_, context ()->get_grob_key ("Beam"));
+ /*
+ Can't use make_spanner_from_properties() because we have to use
+ beam_settings_.
+ */
+ Spanner *beam = new Spanner (beam_settings_,
+ context ()->get_grob_key ("Beam"));
+
for (int i = 0; i < stems_->size (); i++)
{
/*
Direction octave_dir_;
protected:
+
+ virtual void derived_mark () const;
virtual void stop_translation_timestep ();
virtual void process_music ();
virtual void acknowledge_grob (Grob_info);
void inspect_clef_properties ();
};
+void
+Clef_engraver::derived_mark () const
+{
+ scm_gc_mark (prev_octavation_);
+ scm_gc_mark (prev_cpos_);
+ scm_gc_mark (prev_glyph_);
+}
+
Clef_engraver::Clef_engraver ()
{
clef_ = 0;
/*
will trigger a clef at the start since #f != ' ()
*/
- prev_cpos_ = prev_glyph_ = SCM_BOOL_F;
+ prev_octavation_ = prev_cpos_ = prev_glyph_ = SCM_BOOL_F;
}
void
virtual void add_element (Grob *e);
virtual void start_translation_timestep ();
+ virtual void derived_mark () const;
+
SCM interesting_;
public:
TRANSLATOR_DECLARATIONS (Hara_kiri_engraver);
};
+void
+Hara_kiri_engraver::derived_mark () const
+{
+ scm_gc_mark (interesting_);
+}
+
void
Hara_kiri_engraver::start_translation_timestep ()
virtual void acknowledge_grob (Grob_info);
};
+void
+Stanza_number_engraver::derived_mark () const
+{
+ scm_gc_mark (last_stanza_);
+}
+
/*
TODO: should make engraver that collects all the stanzas on a higher
level, and then groups them to the side. Stanza numbers should be
Stanza_number_engraver::Stanza_number_engraver ()
{
+ last_stanza_ = SCM_EOL;
+
text_ = 0;
}
SCM last_time_fraction_;
protected:
+ virtual void derived_mark () const;
virtual void stop_translation_timestep ();
virtual void process_music ();
public:
TRANSLATOR_DECLARATIONS (Time_signature_engraver);
};
+void
+Time_signature_engraver::derived_mark () const
+{
+ scm_gc_mark (last_time_fraction_);
+}
+
+
Time_signature_engraver::Time_signature_engraver ()
{
time_signature_ = 0;
virtual void stop_translation_timestep ();
virtual void process_music ();
+ virtual void derived_mark () const;
Moment started_mom_;
Spanner *volta_span_;
Spanner *end_volta_span_;
bool staff_eligible ();
};
+void
+Volta_engraver::derived_mark () const
+{
+ scm_gc_mark (staff_);
+ scm_gc_mark (start_string_);
+}
+
Volta_engraver::Volta_engraver ()
{
+ start_string_ = SCM_EOL;
staff_ = SCM_EOL;
volta_span_ = 0;
end_volta_span_ = 0;