X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fevent-chord-iterator.cc;h=d6c7a26b9cf606b4abd9bc45125569f07d97c793;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=ea9636d3b9b4e9006bff81fad63ff21b7198b5c3;hpb=d565eec0e4b9ecbfef333802a28435b1f54e8257;p=lilypond.git diff --git a/lily/event-chord-iterator.cc b/lily/event-chord-iterator.cc index ea9636d3b9..d6c7a26b9c 100644 --- a/lily/event-chord-iterator.cc +++ b/lily/event-chord-iterator.cc @@ -3,62 +3,28 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2008 Han-Wen Nienhuys */ -#include "translator-group.hh" -#include "warn.hh" #include "event-chord-iterator.hh" -#include "music-list.hh" -#include "event.hh" - -Event_chord_iterator::Event_chord_iterator () -{ -} -Event_chord_iterator::Event_chord_iterator (Event_chord_iterator const &src) - : Simple_music_iterator (src) -{ -} +#include "context.hh" +#include "dispatcher.hh" +#include "duration.hh" +#include "input.hh" +#include "international.hh" +#include "music.hh" +#include "warn.hh" -Translator_group* -Event_chord_iterator::get_req_translator () +Event_chord_iterator::Event_chord_iterator () { - assert (report_to ()); - if (report_to ()->is_bottom_translator_b ()) - return report_to (); - - set_translator (report_to ()->get_default_interpreter ()); - return report_to (); } void Event_chord_iterator::construct_children () { Simple_music_iterator::construct_children (); - get_req_translator (); -} - -Event_chord* -Event_chord_iterator::get_elt () const -{ - return (Event_chord*) get_music (); -} - -SCM -Event_chord_iterator::get_pending_events (Moment) const -{ - SCM s = SCM_EOL; - if (last_processed_mom_ < Moment (0)) - { - Music_sequence * ms = dynamic_cast (get_music ()); - - for (SCM m = ms->music_list (); gh_pair_p (m); m = ly_cdr (m)) - { - s = gh_cons (ly_car (m) , s); - } - } - return s; + descend_to_bottom_context (); } void @@ -66,17 +32,20 @@ Event_chord_iterator::process (Moment m) { if (last_processed_mom_ < Moment (0)) { - for (SCM s = dynamic_cast (get_music ())->music_list (); - gh_pair_p (s); s = ly_cdr (s)) + for (SCM s = get_music ()->get_property ("elements"); + scm_is_pair (s); s = scm_cdr (s)) { - Music *mus = unsmob_music (ly_car (s)); - - bool gotcha = try_music (mus); - if (!gotcha) - mus->origin ()->warning (_f ("Junking event: `%s'", classname (mus))); + Music *mus = unsmob_music (scm_car (s)); + report_event (mus); + } + for (SCM s = get_music ()->get_property ("events"); + scm_is_pair (s); s = scm_cdr (s)) + { + Stream_event *ev = unsmob_stream_event (scm_car (s)); + get_outlet ()->event_source ()->broadcast (ev); } } - skip (m); + Simple_music_iterator::process (m); } IMPLEMENT_CTOR_CALLBACK (Event_chord_iterator);