]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/music-iterator.hh
release: 0.1.13
[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_group*>report_to_l_arr_;
21   void push_translator (Translator_group*);
22   void pop_translator();
23 protected:
24   bool first_b_;
25   virtual void do_print() const;
26     
27   virtual Translator_group* get_req_translator_l();
28   Music_iterator* get_iterator_p (Music*) const;
29   void set_translator (Translator_group*);
30   Music_iterator *daddy_iter_l_;
31     
32 public:
33   Translator_group*report_to_l() const;
34   DECLARE_MY_RUNTIME_TYPEINFO;
35  
36   static Music_iterator* static_get_iterator_p (Music*,Translator_group*);
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
44   /**
45     Construct sub-iterators, and set the translator to 
46     report to
47    */
48   virtual void construct_children();
49   void print() const;
50 };
51
52 #endif // MUSIC_ITERATOR_HH