X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsimultaneous-music-iterator.cc;h=badc98d65bee38a0c1bec3648ccf87e629f52c17;hb=c2a0e17ed7739c43258389149a2d51cda34fb7bd;hp=0c9cead8fe2005e3d7c7a0bfeea30f1181ca0152;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc index 0c9cead8fe..badc98d65b 100644 --- a/lily/simultaneous-music-iterator.cc +++ b/lily/simultaneous-music-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2005 Han-Wen Nienhuys + (c) 1997--2007 Han-Wen Nienhuys */ #include "simultaneous-music-iterator.hh" @@ -28,7 +28,7 @@ void Simultaneous_music_iterator::derived_substitute (Context *f, Context *t) { for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) - unsmob_iterator (scm_car (s))-> substitute_outlet (f, t); + unsmob_iterator (scm_car (s))->substitute_outlet (f, t); } void @@ -50,15 +50,15 @@ Simultaneous_music_iterator::construct_children () /* if create_separate_contexts_ is set, create a new context with the number number as name */ - SCM name = ly_symbol2scm (get_outlet ()->context_name ().to_str0 ()); - Context *t = (j && create_separate_contexts_) + SCM name = ly_symbol2scm (get_outlet ()->context_name ().c_str ()); + Context *c = (j && create_separate_contexts_) ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL) : get_outlet (); - if (!t) - t = get_outlet (); + if (!c) + c = get_outlet (); - mi->init_translator (mus, t); + mi->init_context (mus, c); mi->construct_children (); if (mi->ok ()) @@ -67,7 +67,7 @@ Simultaneous_music_iterator::construct_children () tail = SCM_CDRLOC (*tail); } else - mi->set_context (0); + mi->quit (); } } @@ -80,18 +80,14 @@ Simultaneous_music_iterator::process (Moment until) Music_iterator *i = unsmob_iterator (scm_car (*proc)); if (i->run_always () || i->pending_moment () == until) - { - i->process (until); - } + i->process (until); if (!i->ok ()) { i->quit (); *proc = scm_cdr (*proc); } else - { - proc = SCM_CDRLOC (*proc); - } + proc = SCM_CDRLOC (*proc); } } @@ -104,7 +100,7 @@ Simultaneous_music_iterator::pending_moment () const for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) { Music_iterator *it = unsmob_iterator (scm_car (s)); - next = next pending_moment (); + next = min (next, it->pending_moment ()); } return next; @@ -137,15 +133,6 @@ Simultaneous_music_iterator::run_always () const return false; } -Music_iterator * -Simultaneous_music_iterator::try_music_in_children (Music *m) const -{ - Music_iterator *b = 0; - for (SCM s = children_list_; !b && scm_is_pair (s); s = scm_cdr (s)) - b = unsmob_iterator (scm_car (s))->try_music (m); - return b; -} - void Simultaneous_music_iterator::do_quit () {