/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2005--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
group_ = 0;
current_event_ = 0;
}
+ /* Mark the members of the struct as used for the GUILE Garbage Collection */
+ void gc_mark () const
+ {
+ scm_gc_mark (number_);
+ scm_gc_mark (alteration_);
+ scm_gc_mark (augmented_);
+ scm_gc_mark (diminished_);
+ scm_gc_mark (augmented_slash_);
+ scm_gc_mark (text_);
+ }
+ bool group_is_equal_to (Stream_event *evt) const
+ {
+ return
+ ly_is_equal (number_, evt->get_property ("figure"))
+ && ly_is_equal (alteration_, evt->get_property ("alteration"))
+ && ly_is_equal (augmented_, evt->get_property ("augmented"))
+ && ly_is_equal (diminished_, evt->get_property ("diminished"))
+ && ly_is_equal (augmented_slash_, evt->get_property ("augmented-slash"))
+ && ly_is_equal (text_, evt->get_property ("text"));
+ }
bool is_continuation () const
{
return
current_event_
&& !force_no_continuation_
- && ly_is_equal (number_,
- current_event_->get_property ("figure"))
- && ly_is_equal (alteration_,
- current_event_->get_property ("alteration"))
- && ly_is_equal (augmented_,
- current_event_->get_property ("augmented"))
- && ly_is_equal (diminished_,
- current_event_->get_property ("diminished"))
- && ly_is_equal (augmented_slash_,
- current_event_->get_property ("augmented-slash"))
- && ly_is_equal (text_,
- current_event_->get_property ("text"));
+ && group_is_equal_to (current_event_);
}
};
{
for (vsize i = 0; i < groups_.size (); i++)
{
- scm_gc_mark (groups_[i].number_);
- scm_gc_mark (groups_[i].alteration_);
- scm_gc_mark (groups_[i].augmented_);
- scm_gc_mark (groups_[i].diminished_);
- scm_gc_mark (groups_[i].augmented_slash_);
- scm_gc_mark (groups_[i].text_);
+ groups_[i].gc_mark ();
}
}
if (to_boolean (get_property ("useBassFigureExtenders")))
{
- SCM fig = ev->get_property ("figure");
- SCM txt = ev->get_property ("text");
for (vsize i = 0; i < groups_.size (); i++)
{
if (!groups_[i].current_event_
- && ly_is_equal (groups_[i].number_, fig)
- && ly_is_equal (groups_[i].text_, txt))
+ && groups_[i].group_is_equal_to (ev))
{
groups_[i].current_event_ = ev;
groups_[i].force_no_continuation_
void
Figured_bass_engraver::process_music ()
{
- if (alignment_ && !to_boolean (get_property ("useBassFigureExtenders")))
+ bool use_extenders = to_boolean (get_property ("useBassFigureExtenders"));
+ if (alignment_ && !use_extenders)
clear_spanners ();
if (rest_event_)
/*
Don't need to sync alignments, if we're not using extenders.
*/
- bool use_extenders = to_boolean (get_property ("useBassFigureExtenders"));
if (!use_extenders)
{
clear_spanners ();