]> git.donarmstrong.com Git - lilypond.git/blob - lily/simple-music-iterator.cc
patch::: 1.3.87.jcn2
[lilypond.git] / lily / simple-music-iterator.cc
1 /*   
2   simple-music-iterator.cc --  implement Simple_music_iterator
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #include "simple-music-iterator.hh"
11 #include "music.hh"
12 #include "input.hh"
13
14 Simple_music_iterator::Simple_music_iterator ()
15   : Music_iterator ()
16 {
17   last_processed_mom_ = -1;
18 }
19
20 Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
21   : Music_iterator (src)
22 {
23   last_processed_mom_ = src.last_processed_mom_;
24   length_mom_ = src.length_mom_;
25 }
26
27 void
28 Simple_music_iterator::construct_children ()
29 {
30   length_mom_ = music_l_->length_mom ();
31 }
32
33 bool
34 Simple_music_iterator::ok ()const
35 {
36   return last_processed_mom_ < length_mom_;
37 }
38
39 Moment
40 Simple_music_iterator::pending_moment ()const
41 {
42   if (music_l_)
43     return Moment (0);
44   else
45     return length_mom_;
46 }
47
48 void
49 Simple_music_iterator::skip (Moment m)
50 {
51   music_l_ = 0;
52   last_processed_mom_ = m;
53 }
54
55 void
56 Simple_music_iterator::process (Moment m)
57 {
58 #if 0
59   /*
60     try_music () causes trouble for base classes
61    */
62   if (music_l_)
63     {
64       bool b = try_music (music_l_);
65       if (!b)
66         music_l_->origin ()->warning (_f ("Junking music: `%s'",
67                                           classname (music_l_)));
68     }
69 #endif
70   skip (m);
71 }