]> git.donarmstrong.com Git - lilypond.git/blob - lily/music-list.cc
release: 0.0.67
[lilypond.git] / lily / music-list.cc
1 /*
2   music-list.cc -- implement Music_list, 
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #include "music.hh"
11 #include "debug.hh"
12
13 Music_list::Music_list(Music_list const&s)
14 {
15     for (iter(s.music_p_list_.top(), i); i.ok(); i++)
16         add(i->clone());
17 }
18
19
20 IMPLEMENT_STATIC_NAME(Music_list);
21
22 void
23 Music_list::add(Music*mus_p)
24 {
25     music_p_list_.bottom().add(mus_p);
26 }
27
28 void
29 Music_list::transpose(Melodic_req const*m)
30 {
31   for (iter(music_p_list_.top(), i); i.ok(); i++)
32       i->transpose(m);
33 }
34
35 void
36 Music_list::do_print() const
37 {
38     for (iter(music_p_list_.top(), i); i.ok(); i++)
39         i->print();
40 }
41
42 IMPLEMENT_STATIC_NAME(Chord);
43
44 void
45 Chord::translate(Moment dt)
46 {
47     for (iter(music_p_list_.top(), i); i.ok(); i++)
48         i->translate(dt);
49 }
50
51 MInterval
52 Chord::time_int()const
53 {
54     MInterval m;
55     for (iter(music_p_list_.top(), i); i.ok(); i++)
56         m.unite(i->time_int());
57     return m;
58 }
59
60 MInterval
61 MVoice::time_int() const
62 {
63     Moment last=0;
64     for (iter(music_p_list_.top(), i); i.ok(); i++)
65         last += i->time_int().length();
66     return MInterval (0,last);
67 }
68
69 void
70 MVoice::translate(Moment dt)
71 {
72     for (iter(music_p_list_.top(), i); i.ok(); i++)
73         i->translate(dt);
74 }
75
76 IMPLEMENT_STATIC_NAME(MVoice);