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_;
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();
49 class Request_iterator : public Music_iterator {
53 Request_iterator(Request const *);
56 virtual bool ok() const;
57 virtual Moment next_moment() const;
59 virtual void do_print()const;
60 virtual void process_and_next(Moment);
63 class Change_iterator : public Music_iterator {
64 Change_reg * change_l_;
67 virtual void process_and_next(Moment);
68 Change_iterator(Change_reg*);
71 class Chord_iterator : public Music_iterator
73 const Chord *chord_C_;
74 Pointer_list<Music_iterator*> children_p_list_;
76 Chord_iterator(Chord const*);
79 virtual void do_print()const;
80 virtual void construct_children();
81 virtual void process_and_next(Moment);
82 virtual Moment next_moment()const;
83 virtual bool ok()const;
86 class Voice_element_iterator : public Chord_iterator {
89 virtual void construct_children();
91 Voice_element_iterator(Voice_element*);
96 class Voice_iterator : private PCursor<Music*>, public Music_iterator
99 const Voice * voice_C_;
100 Music_iterator * iter_p_;
103 Voice_iterator(Voice const*);
106 virtual void do_print()const;
107 virtual void construct_children();
109 virtual void process_and_next(Moment);
110 virtual Moment next_moment()const;
111 virtual bool ok()const;
114 #endif // MUSIC_ITERATOR_HH