X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-list.cc;h=abe444cf6f42f330a23668ffbdccc823fed85250;hb=160441415ece6ea402f7af59087293d8d16c29f2;hp=f836fb4485e23133594b8c78ca9cb32b08690f5c;hpb=8aad615ea7bb31f49a0c2afc21eea5ff5de20437;p=lilypond.git diff --git a/lily/music-list.cc b/lily/music-list.cc index f836fb4485..abe444cf6f 100644 --- a/lily/music-list.cc +++ b/lily/music-list.cc @@ -3,30 +3,30 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2000 Han-Wen Nienhuys */ #include "music-list.hh" +#include "music-wrapper.hh" #include "musical-pitch.hh" #include "request.hh" #include "musical-request.hh" +#include "music-iterator.hh" #include "main.hh" +#include "killing-cons.tcc" Moment Simultaneous_music::length_mom () const { - Moment dur = 0; - for (iter (music_p_list_p_->top(), i); i.ok (); i++) - dur = dur >? i->length_mom (); - - return dur; + return maximum_length (); } + void Music_sequence::compress (Moment m) { - for (PCursor i(music_p_list_p_->top()); i.ok (); i++) - i->compress (m); + for (Cons *i = music_p_list_p_->head_; i; i = i->next_) + i->car_->compress (m); } Simultaneous_music::Simultaneous_music(Music_list *p) @@ -43,18 +43,7 @@ Sequential_music::Sequential_music(Music_list *p) Moment Sequential_music::length_mom () const { - Moment last=0; - for (iter (music_p_list_p_->top(), i); i.ok (); i++) - { - last += i->length_mom (); - } - return last; -} - -Musical_pitch -Sequential_music::to_relative_octave (Musical_pitch p) -{ - return do_relative_octave (p, false); + return cumulative_length (); } Musical_pitch @@ -63,41 +52,26 @@ Simultaneous_music::to_relative_octave (Musical_pitch p) return do_relative_octave (p, true); } + Musical_pitch Music_sequence::do_relative_octave (Musical_pitch p, bool b) { return music_p_list_p_->do_relative_octave (p, b); } + Musical_pitch Music_list::do_relative_octave (Musical_pitch last, bool ret_first) { Musical_pitch retval; int count=0; - for (PCursor i (top ()); i.ok (); i++) + for (Cons *i = head_; i ; i = i->next_) { - last = i->to_relative_octave (last); + last = i->car_->to_relative_octave (last); if (!count ++ ) retval = last; } - // hmmm -#if 0 - if (!ret_first && find_old_relative_b) - { - PCursor b (bottom ()); - - if (b.ok ()) - { - String w = _("\\relative mode changed here, old value: "); - w += last.str (); - - b->warning (w); - retval = last; - } - } - -#endif if (!ret_first) retval = last; @@ -106,25 +80,22 @@ Music_list::do_relative_octave (Musical_pitch last, bool ret_first) Music_list::Music_list (Music_list const &s) - : Pointer_list () + : Cons_list (s), Input (s) { - for (PCursor i(s.top()); i.ok (); i++) - add_music (i->clone()); + Cons_list::init (); + clone_killing_cons_list (*this, s.head_); } + void Music_list::add_music (Music*m_p) { if (!m_p) return; - bottom().add (m_p); + append (new Killing_cons (m_p, 0)); } - - - - Request_chord::Request_chord() : Simultaneous_music (new Music_list) { @@ -134,9 +105,9 @@ Request_chord::Request_chord() Musical_pitch Request_chord::to_relative_octave (Musical_pitch last) { - for (iter (music_p_list_p_->top(),i); i.ok (); i++) + for (Cons *i = music_p_list_p_->head_; i ; i = i->next_) { - if (Melodic_req *m= dynamic_cast (i.ptr ())) + if (Melodic_req *m= dynamic_cast (i->car_)) { Musical_pitch &pit = m->pitch_; pit.to_relative_octave (last); @@ -148,6 +119,10 @@ Request_chord::to_relative_octave (Musical_pitch last) Music_list::Music_list () - : Pointer_list () { } + +Music_sequence::~Music_sequence () +{ + delete music_p_list_p_; +}