]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/music-iterator.hh
release: 0.1.11
[lilypond.git] / lily / include / music-iterator.hh
1 /*
2   music-iterator.hh -- declare Music_iterator
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #ifndef MUSIC_ITERATOR_HH
11 #define MUSIC_ITERATOR_HH
12
13 #include "lily-proto.hh"
14 #include "plist.hh"
15 #include "varray.hh"
16 #include "moment.hh"
17 #include "virtual-methods.hh"
18
19 class Music_iterator {
20   Array<Translator *>report_to_l_arr_;
21   void push_translator (Translator*);
22   void pop_translator();
23 protected:
24   bool first_b_;
25   virtual void do_print() const;
26     
27   virtual Translator * get_req_translator_l();
28   Music_iterator* get_iterator_p (Music*) const;
29   void set_translator (Translator*);
30   Music_iterator *daddy_iter_l_;
31     
32 public:
33   Translator *report_to_l() const;
34   DECLARE_MY_RUNTIME_TYPEINFO;
35  
36   static Music_iterator* static_get_iterator_p (Music*,Translator*);
37   Music_iterator();
38     
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();
44   void print() const;
45 };
46
47 #endif // MUSIC_ITERATOR_HH