source file of the GNU LilyPond music typesetter
-(c) 2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+(c) 2002--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
class Unfolded_repeat_iterator : public Sequential_iterator
{
public:
- static SCM constructor_cxx_function;
- VIRTUAL_COPY_CONS (Music_iterator);
+ DECLARE_SCHEME_CALLBACK(constructor, ());
protected:
virtual SCM get_music_list () const;
};
SCM l = SCM_EOL;
SCM *tail = &l;
- SCM body = music_l ()->get_mus_property ("element");
- SCM alts = music_l ()->get_mus_property ("elements");
+ SCM body = get_music ()->get_mus_property ("element");
+ SCM alts = get_music ()->get_mus_property ("elements");
int alt_count = scm_ilength (alts);
- int rep_count = gh_scm2int (music_l ()->get_mus_property ("repeat-count"));
+ int rep_count = gh_scm2int (get_music ()->get_mus_property ("repeat-count"));
for (int i = 0; i < rep_count; i++)
{
class Volta_repeat_iterator : public Sequential_iterator
{
public:
- static SCM constructor_cxx_function;
- VIRTUAL_COPY_CONS (Music_iterator);
+ DECLARE_SCHEME_CALLBACK(constructor, ());
Volta_repeat_iterator();
void add_repeat_command (SCM);
virtual void next_element (bool);
virtual void construct_children();
virtual void process (Moment);
-
+
+ bool first_time_;
int alt_count_;
int rep_count_;
int done_count_;
Volta_repeat_iterator::Volta_repeat_iterator()
{
done_count_ = alt_count_ = rep_count_= 0;
+ first_time_ = true;
}
SCM
Volta_repeat_iterator::get_music_list()const
{
- return gh_cons (music_l ()->get_mus_property ("element"),
- music_l ()->get_mus_property ("elements"));
+ return gh_cons (get_music ()->get_mus_property ("element"),
+ get_music ()->get_mus_property ("elements"));
}
void
{
Sequential_iterator::construct_children();
- SCM alts = music_l ()->get_mus_property ("elements");
+ SCM alts = get_music ()->get_mus_property ("elements");
alt_count_ = scm_ilength (alts);
- rep_count_ = gh_scm2int (music_l ()->get_mus_property ("repeat-count"));
+ rep_count_ = gh_scm2int (get_music ()->get_mus_property ("repeat-count"));
done_count_ = 0;
}
Volta_repeat_iterator::add_repeat_command (SCM what)
{
SCM reps = ly_symbol2scm ("repeatCommands");
- SCM current_reps = report_to_l ()->internal_get_property (reps);
+ SCM current_reps = get_outlet ()->internal_get_property (reps);
- Translator_group * where = report_to_l ()->where_defined (reps);
+ Translator_group * where = get_outlet ()->where_defined (reps);
if (where
&& current_reps == SCM_EOL || gh_pair_p (current_reps))
{
{
if (alt_count_)
{
- String repstr = to_str (rep_count_ - alt_count_ + done_count_) + ".";
+ String repstr = to_string (rep_count_ - alt_count_ + done_count_) + ".";
if (done_count_ > 1)
{
add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), SCM_BOOL_F, SCM_UNDEFINED));
if (done_count_ == 1 && alt_count_ < rep_count_)
{
- repstr = "1.--" + to_str (rep_count_ - alt_count_ + done_count_) + ".";
+ repstr = "1.--" + to_string (rep_count_ - alt_count_ + done_count_) + ".";
}
if (done_count_ <= alt_count_)
add_repeat_command (scm_list_n (ly_symbol2scm ("volta"),
- ly_str02scm (repstr.ch_C ()), SCM_UNDEFINED));
+ scm_makfrom0str (repstr.to_str0 ()), SCM_UNDEFINED));
}
else
{
void
Volta_repeat_iterator::process (Moment m)
{
- if (!m.to_bool ())
+ if (first_time_)
{
add_repeat_command (ly_symbol2scm ("start-repeat"));
+ first_time_ = false;
}
Sequential_iterator::process(m);
}