]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/unfolded-repeat-iterator.hh
release: 1.3.107
[lilypond.git] / lily / include / unfolded-repeat-iterator.hh
index 9008f3042098f35581f1f6cd053622ae6bcbfd1b..a3c757a38177bbe3ceb86fac69b3636b7ca5b6ac 100644 (file)
  */
 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 */