2 music-iterator.hh -- declare {Music,Chord,Voice}_iterator
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #ifndef MUSIC_ITERATOR_HH
11 #define MUSIC_ITERATOR_HH
13 #include "lily-proto.hh"
18 class Music_iterator {
19 Array<Translator *>report_to_l_arr_;
20 void push_translator (Translator*);
21 void pop_translator();
24 virtual void do_print()const;
26 virtual Translator * get_req_translator_l();
27 Music_iterator* get_iterator_p (Music*)const;
28 void set_translator (Translator*);
29 Music_iterator *daddy_iter_l_;
32 Translator *report_to_l()const;
33 DECLARE_MY_RUNTIME_TYPEINFO;
35 static Music_iterator* static_get_iterator_p (Music*,Translator*);
38 virtual void process_and_next (Moment until);
39 virtual Moment next_moment()const;
40 virtual bool ok()const;
41 virtual ~Music_iterator();
42 virtual void construct_children();
47 class Chord_iterator : public Music_iterator
49 const Chord *chord_C_;
50 Pointer_list<Music_iterator*> children_p_list_;
53 Chord_iterator (Chord const*);
54 DECLARE_MY_RUNTIME_TYPEINFO;
56 virtual void do_print()const;
57 virtual void construct_children();
58 virtual void process_and_next (Moment);
59 virtual Moment next_moment()const;
60 virtual bool ok()const;
63 class Request_chord_iterator : public Music_iterator {
64 const Request_chord * elt_l_;
68 Request_chord_iterator (Request_chord*);
69 DECLARE_MY_RUNTIME_TYPEINFO;
72 virtual void process_and_next (Moment);
73 virtual Moment next_moment()const;
74 virtual void construct_children();
75 virtual bool ok()const;
76 virtual void do_print()const;
80 class Voice_iterator : private PCursor<Music*>, public Music_iterator
83 const Voice * voice_C_;
84 Music_iterator * iter_p_;
85 void start_next_element();
87 void set_voice_translator();
90 Voice_iterator (Voice const*);
91 DECLARE_MY_RUNTIME_TYPEINFO;
93 virtual void do_print()const;
94 virtual void construct_children();
96 virtual void process_and_next (Moment);
97 virtual Moment next_moment()const;
98 virtual bool ok()const;
101 #endif // MUSIC_ITERATOR_HH