]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/music-iterator.hh
release: 0.0.78
[lilypond.git] / lily / include / music-iterator.hh
index a375dc35d1e495bcc868dbe1543555885f57a13e..42ad968c420a575bf517e86a74ee72c532117abc 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "lily-proto.hh"
 #include "plist.hh"
+#include "varray.hh"
 #include "moment.hh"
 
 class Music_iterator {
@@ -21,42 +22,34 @@ protected:
     
 public:
     Music_iterator *daddy_iter_l_;
-    NAME_MEMBERS();
-    Register_group_register *report_to_reg_l_;
+    DECLARE_MY_RUNTIME_TYPEINFO;
+    Array<Translator *>report_to_l_arr_;
+
+    Translator *report_to_l()const;
     
-    static Music_iterator* static_get_iterator_p(Music*,Register_group_register*);
+    static Music_iterator* static_get_iterator_p(Music*,Translator*);
     Music_iterator* get_iterator_p(Music*)const;
-    void set_reg(Register_group_register*);
+    void set_translator(Translator*);
+    void push_translator(Translator*);
+    void pop_translator();
+
+    
     Music_iterator();
-    virtual void next(Moment until);
+    
+    virtual void process_and_next(Moment until);
     virtual Moment next_moment()const;
     virtual bool ok()const;
     virtual ~Music_iterator();
     virtual void construct_children();
     void print()const;
-    virtual Register_group_register * get_req_acceptor_l();
-};
-
-// duh.
-class Request_iterator : public Music_iterator {
-    Request  *req_l_;
-    bool last_b_;
-public:
-    Request_iterator(Request const *);
-    NAME_MEMBERS();
-protected:
-    virtual bool ok() const;
-    virtual Moment next_moment() const;
-    
-    virtual void do_print()const;
-    virtual void next(Moment);
+    virtual Translator * get_req_translator_l();
 };
 
 class Change_iterator : public Music_iterator {
     Change_reg * change_l_;
 public:
-     NAME_MEMBERS();
-    virtual void next(Moment);
+     DECLARE_MY_RUNTIME_TYPEINFO;
+    virtual void process_and_next(Moment);
     Change_iterator(Change_reg*);
 };
 
@@ -65,23 +58,31 @@ class Chord_iterator : public Music_iterator
     const Chord *chord_C_;
     Pointer_list<Music_iterator*> children_p_list_;
 public:
+    ~Chord_iterator();
     Chord_iterator(Chord const*);
-    NAME_MEMBERS();
+    DECLARE_MY_RUNTIME_TYPEINFO;
 protected:
     virtual void do_print()const;
     virtual void construct_children();
-    virtual void next(Moment);
+    virtual void process_and_next(Moment);
     virtual Moment next_moment()const;
     virtual bool ok()const;
 };
 
-class Voice_element_iterator : public Chord_iterator {
+class Request_chord_iterator : public Music_iterator {
+    const Request_chord * elt_l_;
+    Moment elt_duration_;
+    bool last_b_;
+public:
+    Request_chord_iterator(Request_chord*);
+    DECLARE_MY_RUNTIME_TYPEINFO;
 
 protected:
+    virtual void process_and_next(Moment);
+    virtual Moment next_moment()const;
     virtual void construct_children();
-public:
-    Voice_element_iterator(Voice_element*);
-    NAME_MEMBERS();
+    virtual bool ok()const;
+    virtual void do_print()const;
 };
 
 
@@ -93,12 +94,12 @@ class Voice_iterator :  private PCursor<Music*>, public Music_iterator
     void next_element();
 public:
     Voice_iterator(Voice const*);
-    NAME_MEMBERS();
+    DECLARE_MY_RUNTIME_TYPEINFO;
 protected:
     virtual void do_print()const;
     virtual void construct_children();
     ~Voice_iterator();    
-    virtual void next(Moment);
+    virtual void process_and_next(Moment);
     virtual Moment next_moment()const;
     virtual bool ok()const;
 };