X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsimultaneous-music-iterator.cc;h=550d1adeaf1e8ed8e2fd11e64e80d6cb9420cf2a;hb=84aa0dad3e436409f734cca40f475d3808cfdfeb;hp=e1403a12cacecfcf82c861ee97d71e8dd6fd6d8b;hpb=94a1966c72301b8bd1d8bb3b8628c3f089d007cf;p=lilypond.git diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc index e1403a12ca..550d1adeaf 100644 --- a/lily/simultaneous-music-iterator.cc +++ b/lily/simultaneous-music-iterator.cc @@ -1,25 +1,23 @@ /* - Simultaneous_music-iterator.cc -- implement Simultaneous_music_iterator + simultaneous-music-iterator.cc -- implement Simultaneous_music_iterator source file of the GNU LilyPond music typesetter - (c) 1997--2004 Han-Wen Nienhuys + (c) 1997--2005 Han-Wen Nienhuys */ +#include "simultaneous-music-iterator.hh" +#include "music.hh" #include "context.hh" #include "warn.hh" -#include "simultaneous-music-iterator.hh" -#include "music-list.hh" #include "context-def.hh" - Simultaneous_music_iterator::Simultaneous_music_iterator () { create_separate_contexts_ = false; children_list_ = SCM_EOL; } - void Simultaneous_music_iterator::derived_mark () const { @@ -27,10 +25,10 @@ Simultaneous_music_iterator::derived_mark () const } void -Simultaneous_music_iterator::derived_substitute (Context *f,Context *t) +Simultaneous_music_iterator::derived_substitute (Context *f, Context *t) { - for (SCM s = children_list_; ly_pair_p (s); s = ly_cdr (s)) - unsmob_iterator (ly_car (s))-> substitute_outlet (f,t); + for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) + unsmob_iterator (scm_car (s))->substitute_outlet (f, t); } void @@ -41,19 +39,19 @@ Simultaneous_music_iterator::construct_children () SCM i = get_music ()->get_property ("elements"); children_list_ = SCM_EOL; - SCM * tail = &children_list_; - for (; ly_pair_p (i); i = ly_cdr (i), j++) + SCM *tail = &children_list_; + for (; scm_is_pair (i); i = scm_cdr (i), j++) { - Music *mus = unsmob_music (ly_car (i)); + Music *mus = unsmob_music (scm_car (i)); SCM scm_iter = get_static_get_iterator (mus); - Music_iterator * mi = unsmob_iterator (scm_iter); + Music_iterator *mi = unsmob_iterator (scm_iter); /* if create_separate_contexts_ is set, create a new context with the number number as name */ - SCM name = unsmob_context_def (get_outlet ()->definition_)->get_context_name (); - Context * t = (j && create_separate_contexts_) + SCM name = ly_symbol2scm (get_outlet ()->context_name ().to_str0 ()); + Context *t = (j && create_separate_contexts_) ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL) : get_outlet (); @@ -63,32 +61,32 @@ Simultaneous_music_iterator::construct_children () mi->init_translator (mus, t); mi->construct_children (); - if (mi->ok ()) + if (mi->ok ()) { *tail = scm_cons (scm_iter, *tail); tail = SCM_CDRLOC (*tail); } else - mi->set_translator (0); + mi->set_context (0); } } void Simultaneous_music_iterator::process (Moment until) { - SCM *proc = &children_list_; - while (ly_pair_p (*proc)) + SCM *proc = &children_list_; + while (scm_is_pair (*proc)) { - Music_iterator * i = unsmob_iterator (ly_car (*proc)); + Music_iterator *i = unsmob_iterator (scm_car (*proc)); if (i->run_always () - || i->pending_moment () == until) + || i->pending_moment () == until) { i->process (until); } if (!i->ok ()) { i->quit (); - *proc = ly_cdr (*proc); + *proc = scm_cdr (*proc); } else { @@ -102,27 +100,27 @@ Simultaneous_music_iterator::pending_moment () const { Moment next; next.set_infinite (1); - - for (SCM s = children_list_; ly_pair_p (s); s = ly_cdr (s)) + + for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) { - Music_iterator * it = unsmob_iterator (ly_car (s)); - next = next pending_moment (); + Music_iterator *it = unsmob_iterator (scm_car (s)); + next = min (next, it->pending_moment ()); } - + return next; } bool Simultaneous_music_iterator::ok () const { - bool run_always_ok = false; - for (SCM s = children_list_; ly_pair_p (s); s = ly_cdr (s)) + bool run_always_ok = false; + for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) { - Music_iterator * it = unsmob_iterator (ly_car (s)); + Music_iterator *it = unsmob_iterator (scm_car (s)); if (!it->run_always ()) return true; else - run_always_ok = run_always_ok || it->ok (); + run_always_ok = run_always_ok || it->ok (); } return run_always_ok; } @@ -130,29 +128,29 @@ Simultaneous_music_iterator::ok () const bool Simultaneous_music_iterator::run_always () const { - for (SCM s = children_list_; ly_pair_p (s); s = ly_cdr (s)) + for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) { - Music_iterator * it = unsmob_iterator (ly_car (s)); + Music_iterator *it = unsmob_iterator (scm_car (s)); if (it->run_always ()) return true; } return false; } -Music_iterator* +Music_iterator * Simultaneous_music_iterator::try_music_in_children (Music *m) const { - Music_iterator * b=0; - for (SCM s = children_list_; !b && ly_pair_p (s); s = ly_cdr (s)) - b =unsmob_iterator (ly_car (s))->try_music (m); + 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 () { - for (SCM s = children_list_; ly_pair_p (s); s = ly_cdr (s)) - unsmob_iterator (ly_car (s))->quit (); + for (SCM s = children_list_; scm_is_pair (s); s = scm_cdr (s)) + unsmob_iterator (scm_car (s))->quit (); } IMPLEMENT_CTOR_CALLBACK (Simultaneous_music_iterator);