2 music-list.cc -- implement Music_sequence, Simultaneous_music, Sequential_music
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "music-list.hh"
10 #include "musical-pitch.hh"
12 #include "musical-request.hh"
16 Simultaneous_music::length_mom () const
19 for (iter (music_p_list_p_->top(), i); i.ok (); i++)
20 dur = dur >? i->length_mom ();
26 Music_sequence::compress (Moment m)
28 for (PCursor<Music*> i(music_p_list_p_->top()); i.ok (); i++)
32 Simultaneous_music::Simultaneous_music(Music_list *p)
38 Sequential_music::Sequential_music(Music_list *p)
44 Sequential_music::length_mom () const
47 for (iter (music_p_list_p_->top(), i); i.ok (); i++)
49 last += i->length_mom ();
55 Sequential_music::to_relative_octave (Musical_pitch p)
57 return do_relative_octave (p, false);
61 Simultaneous_music::to_relative_octave (Musical_pitch p)
63 return do_relative_octave (p, true);
67 Music_sequence::do_relative_octave (Musical_pitch p, bool b)
69 return music_p_list_p_->do_relative_octave (p, b);
73 Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
77 for (PCursor<Music*> i (top ()); i.ok (); i++)
79 last = i->to_relative_octave (last);
86 if (!ret_first && find_old_relative_b)
88 PCursor<Music*> b (bottom ());
92 String w = _("\\relative mode changed here, old value: ");
108 Music_list::Music_list (Music_list const &s)
109 : Pointer_list<Music*> ()
111 for (PCursor<Music*> i(s.top()); i.ok (); i++)
112 add_music (i->clone());
116 Music_list::add_music (Music*m_p)
128 Request_chord::Request_chord()
129 : Simultaneous_music (new Music_list)
135 Request_chord::to_relative_octave (Musical_pitch last)
137 for (iter (music_p_list_p_->top(),i); i.ok (); i++)
139 if (Melodic_req *m= dynamic_cast <Melodic_req *> (i.ptr ()))
141 Musical_pitch &pit = m->pitch_;
142 pit.to_relative_octave (last);
150 Music_list::Music_list ()
151 : Pointer_list<Music*> ()