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"
17 class Music_iterator {
22 Music_iterator *daddy_iter_l_;
24 Register_group_register *report_to_reg_l_;
26 static Music_iterator* static_get_iterator_p(Music*,Register_group_register*);
27 Music_iterator* get_iterator_p(Music*)const;
29 virtual void next(Moment until);
30 virtual Moment next_moment()const;
31 virtual bool ok()const;
32 virtual ~Music_iterator();
33 virtual void construct_children();
34 virtual Register_group_register * get_req_acceptor_l();
38 class Request_iterator : public Music_iterator {
41 Request_iterator(Request const *);
44 virtual void next(Moment);
47 class Change_iterator : public Music_iterator {
48 Change_reg * change_l_;
51 virtual void next(Moment);
52 Change_iterator(Change_reg*);
55 class Chord_iterator : public Music_iterator
57 const Chord *chord_C_;
58 Pointer_list<Music_iterator*> children_p_list_;
60 Chord_iterator(Chord const*);
63 virtual void construct_children();
64 virtual void next(Moment);
65 virtual Moment next_moment()const;
66 virtual bool ok()const;
69 class Voice_element_iterator : public Chord_iterator {
72 virtual void construct_children();
74 Voice_element_iterator(Voice_element*);
79 class Voice_iterator : private PCursor<Music*>, public Music_iterator
82 const Voice * voice_C_;
83 Music_iterator * iter_p_;
86 Voice_iterator(Voice const*);
89 virtual void construct_children();
91 virtual void next(Moment);
92 virtual Moment next_moment()const;
93 virtual bool ok()const;
96 #endif // MUSIC_ITERATOR_HH