]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/sequential-iterator.hh
*** empty log message ***
[lilypond.git] / lily / include / sequential-iterator.hh
1 /*   
2   sequential-iterator.hh -- declare Sequential_iterator
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2002--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #ifndef SEQUENTIAL_ITERATOR_HH
10 #define SEQUENTIAL_ITERATOR_HH
11
12 #include "music-iterator.hh"
13 #include "protected-scm.hh"
14
15
16 /** Sequential_music iteration: walk each element in turn, and
17   construct an iterator for every element.
18   
19  */
20 class Sequential_iterator :  public Music_iterator
21 {
22 public:
23   DECLARE_SCHEME_CALLBACK(constructor, ());
24   Sequential_iterator ();
25   Sequential_iterator (Sequential_iterator const&);
26   virtual void derived_substitute (Context *f, Context *t) ;
27
28   virtual void derived_mark () const;
29
30   virtual void construct_children ();
31   virtual Moment pending_moment () const;
32   virtual void do_quit(); 
33   virtual bool ok () const;
34
35 protected:
36   virtual void process (Moment);
37   virtual Music_iterator *try_music_in_children (Music *) const;
38   virtual bool run_always () const;
39 protected:
40   Music_iterator * iter_;
41   virtual SCM get_music_list ()const;
42   virtual void next_element (bool side_effect);
43
44
45   Grace_fixup *get_grace_fixup () const;
46   void next_grace_fixup ();
47   
48 private:
49   Moment last_mom_;
50   Moment here_mom_;
51   SCM cursor_;
52   Grace_fixup * grace_fixups_;
53   
54 };
55
56 #endif /* SEQUENTIAL_ITERATOR_HH */