*/
class Unfolded_repeat_iterator : public Music_iterator
{
+ void add_repeat_command (SCM);
+
public:
+ VIRTUAL_COPY_CONS (Music_iterator);
/**
How often have we done the body (assuming bodies are interspersed.)?
*/
int done_count_;
+ static SCM constructor_cxx_function;
+ /*
+ are we now busy doing the body?
- /// unfold everything, or do volta?
- bool full_unfold_b_;
-
- /// are we busy doing the body?
+ */
bool do_main_b_;
+ /*
+ are we doing volta's?
+ */
+ bool volta_b_;
+
/** How far have we progressed into the repeat.
This excludes the elt currently being iterated.
*/
- Moment done_mom_;
+ Moment here_mom_;
int alternative_count_i_;
Music_iterator * current_iter_p_;
/// pointer to the alternative that will be processed next.
- Cons<Music> *alternative_cons_l_;
+ SCM alternative_cons_;
~Unfolded_repeat_iterator();
Unfolded_repeat_iterator ();
-
protected:
virtual void construct_children ();
- virtual Moment next_moment () const;
- virtual void do_process_and_next (Moment);
- virtual Music_iterator *try_music_in_children (Music const*) const;
-
+ virtual Moment pending_moment () const;
+ virtual void process (Moment);
+ virtual Music_iterator *try_music_in_children (Music *) const;
+ virtual void skip (Moment);
+ virtual SCM get_music (Moment) const;
+
virtual bool ok () const;
- virtual void next_element ();
- virtual void do_print () const;
+ virtual void next_element (bool side_effect);
};
+
+class Volta_repeat_iterator : public Unfolded_repeat_iterator
+{
+public:
+ Volta_repeat_iterator ();
+ static SCM constructor_cxx_function;
+ VIRTUAL_COPY_CONS(Music_iterator);
+};
+
+
#endif /* UNFOLDED_REPEAT_ITERATOR_HH */