]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/music-iterator.hh
release: 0.1.8
[lilypond.git] / lily / include / music-iterator.hh
index 25f3c7fbc3b8a0e31764bc6cc5a18d84066a48a5..636fc659c9111a3d87a8eba96d9638b1462320e2 100644 (file)
 #include "moment.hh"
 
 class Music_iterator {
+   Array<Translator *>report_to_l_arr_;
+   void push_translator (Translator*);
+    void pop_translator();
 protected:
     bool first_b_;
     virtual void do_print()const;
     
-public:
+    virtual Translator * get_req_translator_l();
+    Music_iterator* get_iterator_p (Music*)const;
+    void set_translator (Translator*);
     Music_iterator *daddy_iter_l_;
-    NAME_MEMBERS();
-    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();
-
     
+public:
+    Translator *report_to_l()const;
+    DECLARE_MY_RUNTIME_TYPEINFO;
+    static Music_iterator* static_get_iterator_p (Music*,Translator*);
     Music_iterator();
     
-    virtual void process_and_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 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();
-    virtual void process_and_next(Moment);
-    Change_iterator(Change_reg*);
-};
 
 class Chord_iterator : public Music_iterator
 {
     const Chord *chord_C_;
     Pointer_list<Music_iterator*> children_p_list_;
 public:
-    Chord_iterator(Chord const*);
-    NAME_MEMBERS();
+    ~Chord_iterator();
+    Chord_iterator (Chord const*);
+    DECLARE_MY_RUNTIME_TYPEINFO;
 protected:
     virtual void do_print()const;
     virtual void construct_children();
-    virtual void process_and_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;
 };
 
 
@@ -98,15 +82,18 @@ class Voice_iterator :  private PCursor<Music*>, public Music_iterator
     Moment here_mom_;
     const Voice * voice_C_;
     Music_iterator * iter_p_;
-    void next_element();
+    void start_next_element();
+    void leave_element();
+    void set_voice_translator();
+    
 public:
-    Voice_iterator(Voice const*);
-    NAME_MEMBERS();
+    Voice_iterator (Voice const*);
+    DECLARE_MY_RUNTIME_TYPEINFO;
 protected:
     virtual void do_print()const;
     virtual void construct_children();
     ~Voice_iterator();    
-    virtual void process_and_next(Moment);
+    virtual void process_and_next (Moment);
     virtual Moment next_moment()const;
     virtual bool ok()const;
 };