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;
};
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::add_repeat_command (SCM what)
{
SCM reps = ly_symbol2scm ("repeatCommands");
- SCM current_reps = report_to ()->internal_get_property (reps);
+ SCM current_reps = get_outlet ()->internal_get_property (reps);
- Translator_group * where = report_to ()->where_defined (reps);
+ Translator_group * where = get_outlet ()->where_defined (reps);
if (where
&& current_reps == SCM_EOL || gh_pair_p (current_reps))
{
if (done_count_ <= alt_count_)
add_repeat_command (scm_list_n (ly_symbol2scm ("volta"),
- ly_str02scm (repstr.to_str0 ()), 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);
}