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 {
21 virtual void do_print()const;
24 Music_iterator *daddy_iter_l_;
25 DECLARE_MY_RUNTIME_TYPEINFO;
26 Array<Translator *>report_to_l_arr_;
28 Translator *report_to_l()const;
30 static Music_iterator* static_get_iterator_p(Music*,Translator*);
31 Music_iterator* get_iterator_p(Music*)const;
32 void set_translator(Translator*);
33 void push_translator(Translator*);
34 void pop_translator();
39 virtual void process_and_next(Moment until);
40 virtual Moment next_moment()const;
41 virtual bool ok()const;
42 virtual ~Music_iterator();
43 virtual void construct_children();
45 virtual Translator * get_req_translator_l();
48 class Change_iterator : public Music_iterator {
49 Change_reg * change_l_;
51 DECLARE_MY_RUNTIME_TYPEINFO;
52 virtual void process_and_next(Moment);
53 Change_iterator(Change_reg*);
56 class Chord_iterator : public Music_iterator
58 const Chord *chord_C_;
59 Pointer_list<Music_iterator*> children_p_list_;
62 Chord_iterator(Chord const*);
63 DECLARE_MY_RUNTIME_TYPEINFO;
65 virtual void do_print()const;
66 virtual void construct_children();
67 virtual void process_and_next(Moment);
68 virtual Moment next_moment()const;
69 virtual bool ok()const;
72 class Request_chord_iterator : public Music_iterator {
73 const Request_chord * elt_l_;
77 Request_chord_iterator(Request_chord*);
78 DECLARE_MY_RUNTIME_TYPEINFO;
81 virtual void process_and_next(Moment);
82 virtual Moment next_moment()const;
83 virtual void construct_children();
84 virtual bool ok()const;
85 virtual void do_print()const;
89 class Voice_iterator : private PCursor<Music*>, public Music_iterator
92 const Voice * voice_C_;
93 Music_iterator * iter_p_;
96 Voice_iterator(Voice const*);
97 DECLARE_MY_RUNTIME_TYPEINFO;
99 virtual void do_print()const;
100 virtual void construct_children();
102 virtual void process_and_next(Moment);
103 virtual Moment next_moment()const;
104 virtual bool ok()const;
107 #endif // MUSIC_ITERATOR_HH