]> git.donarmstrong.com Git - lilypond.git/blob - lily/music-sequence.cc
release: 1.3.19
[lilypond.git] / lily / music-sequence.cc
1 /*   
2   music-sequence.cc --  implement Music_sequence
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9 #include "music-list.hh"
10 #include "debug.hh"
11 #include "musical-pitch.hh"
12
13 Music_sequence::Music_sequence (Music_sequence const&s)
14   : Music (s)
15 {
16   music_p_list_p_ = new Music_list (*s.music_p_list_p_);
17 }
18
19
20
21 Music_sequence::Music_sequence(Music_list *mlist_p)
22 {
23   music_p_list_p_ = mlist_p;
24 }
25
26 void
27 Music_sequence::transpose (Musical_pitch rq)
28 {
29   for (Cons<Music> *i = music_p_list_p_->head_; i;  i = i->next_)
30     i->car_->transpose (rq);    
31 }
32
33 void
34 Music_sequence::do_print() const
35 {
36 #ifndef NPRINT
37   for (Cons<Music> *i = music_p_list_p_->head_; i;  i = i->next_)  
38     i->car_->print();
39 #endif 
40 }
41
42
43 void
44 Music_sequence::add_music (Music *m_p)
45 {
46   music_p_list_p_->add_music (m_p);
47 }
48
49 Moment
50 Music_sequence::cumulative_length () const
51 {
52   Moment last=0;
53   for (Cons<Music> *i = music_p_list_p_->head_; i;  i = i->next_)
54     {
55       last += i->car_->length_mom ();
56     }
57   return  last;
58 }
59
60 Musical_pitch
61 Music_sequence::to_relative_octave (Musical_pitch p)
62 {
63   return do_relative_octave (p, false);
64 }
65
66
67 Moment
68 Music_sequence::maximum_length () const
69 {
70   Moment dur = 0;
71   for (Cons<Music> *i = music_p_list_p_->head_; i;  i = i->next_)
72     dur = dur >? i->car_->length_mom ();
73
74   return dur;
75 }
76 int
77 Music_sequence::length_i () const
78 {
79   return cons_list_size_i (music_p_list_p_->head_);
80 }