X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fperformer-group-performer.cc;h=a49cffbbbd5efbb55c119ba3112addec5a9d81fb;hb=810defa88e1c382cf3bb1715a77b883d0b1c85a0;hp=9a10e3d16fd3f7f71e9668b2e757ee29ff954745;hpb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;p=lilypond.git diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index 9a10e3d16f..a49cffbbbd 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -3,20 +3,21 @@ source file of the GNU LilyPond music typesetter - (c) 1996--2002 Han-Wen Nienhuys + (c) 1996--2004 Han-Wen Nienhuys Jan Nieuwenhuizen */ #include "performer-group-performer.hh" +#include "context.hh" #include "audio-element.hh" #include "warn.hh" - -ENTER_DESCRIPTION(Performer_group_performer, +ADD_TRANSLATOR (Performer_group_performer, /* descr */ "", /* creats*/ "", -/* acks */ "", +/* accepts */ "", +/* acks */ "", /* reads */ "", /* write */ ""); @@ -26,33 +27,23 @@ void Performer_group_performer::announce_element (Audio_element_info info) { announce_infos_.push (info); - Performer::announce_element (info); -} - + Translator *t + = context ()->get_parent_context ()->implementation (); - -void -Performer_group_performer::create_audio_elements () -{ - for (SCM p = simple_trans_list_; gh_pair_p (p); p = ly_cdr (p)) - { - Translator * t = unsmob_translator (ly_car (p)); - Performer * eng = dynamic_cast (t); - if (eng) - eng->create_audio_elements (); - } + if (Performer_group_performer * eg = dynamic_cast (t)) + eg->announce_element (info); } void Performer_group_performer::acknowledge_audio_elements () { - for (int j =0; j < announce_infos_.size (); j++) + for (int j = 0; j < announce_infos_.size (); j++) { Audio_element_info info = announce_infos_[j]; - for (SCM p = simple_trans_list_; gh_pair_p (p); p = ly_cdr (p)) + for (SCM p = get_simple_trans_list (); scm_is_pair (p); p = scm_cdr (p)) { - Translator * t = unsmob_translator (ly_car (p)); + Translator * t = unsmob_translator (scm_car (p)); Performer * eng = dynamic_cast (t); if (eng && eng!= info.origin_trans_) eng->acknowledge_audio_element (info); @@ -63,30 +54,32 @@ Performer_group_performer::acknowledge_audio_elements () void Performer_group_performer::do_announces () { - for (SCM p = trans_group_list_; gh_pair_p (p); p =ly_cdr (p)) + while (1) { - Translator * t = unsmob_translator (ly_car (p)); - dynamic_cast (t)->do_announces (); - } - + create_audio_elements (); + performer_each (get_simple_trans_list (), + &Performer::create_audio_elements); - create_audio_elements (); - - while (announce_infos_.size ()) - { + if (!announce_infos_.size ()) + break ; + acknowledge_audio_elements (); announce_infos_.clear (); - create_audio_elements (); } +} + +Performer_group_performer::Performer_group_performer () +{ +} - if (announce_infos_.size ()) + +void +performer_each (SCM list, Performer_method method) +{ + for (SCM p = list; scm_is_pair (p); p = scm_cdr (p)) { -#if 0 //printf? -> include - printf ("do_announces: elt: %s\n", - classname (announce_infos_[0].elem_)); -#endif - announce_infos_.clear (); + Performer * e = dynamic_cast(unsmob_translator (scm_car (p))); + if (e) + (e->*method) (); } } - -Performer_group_performer::Performer_group_performer(){}