]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/music-iterator.hh
release: 0.0.78
[lilypond.git] / lily / include / music-iterator.hh
index 661d380d6c27a1570014d215d30c5ce32119f039..42ad968c420a575bf517e86a74ee72c532117abc 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "lily-proto.hh"
 #include "plist.hh"
+#include "varray.hh"
 #include "moment.hh"
 
 class Music_iterator {
@@ -21,12 +22,18 @@ protected:
     
 public:
     Music_iterator *daddy_iter_l_;
-    NAME_MEMBERS();
-    Translator *report_to_l_;
+    DECLARE_MY_RUNTIME_TYPEINFO;
+    Array<Translator *>report_to_l_arr_;
+
+    Translator *report_to_l()const;
     
     static Music_iterator* static_get_iterator_p(Music*,Translator*);
     Music_iterator* get_iterator_p(Music*)const;
     void set_translator(Translator*);
+    void push_translator(Translator*);
+    void pop_translator();
+
+    
     Music_iterator();
     
     virtual void process_and_next(Moment until);
@@ -38,25 +45,10 @@ public:
     virtual Translator * get_req_translator_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 process_and_next(Moment);
-};
-
 class Change_iterator : public Music_iterator {
     Change_reg * change_l_;
 public:
-     NAME_MEMBERS();
+     DECLARE_MY_RUNTIME_TYPEINFO;
     virtual void process_and_next(Moment);
     Change_iterator(Change_reg*);
 };
@@ -66,8 +58,9 @@ 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();
@@ -76,13 +69,20 @@ protected:
     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;
 };
 
 
@@ -94,7 +94,7 @@ 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();