X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fchange-iterator.cc;h=747fd35dc791844bf57dc8dbe584bf23c586efcc;hb=38269bfebef7893a1bd82fd2182155f77a59e5a7;hp=730e4adc8e3cb241ab121e0b302dabcdca7d7025;hpb=f1346920f64c571a1475d3ded295b9637560c6bc;p=lilypond.git diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc index 730e4adc8e..747fd35dc7 100644 --- a/lily/change-iterator.cc +++ b/lily/change-iterator.cc @@ -3,58 +3,58 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2002 Han-Wen Nienhuys */ #include "change-iterator.hh" #include "translator-group.hh" -#include "change-translator.hh" -#include "debug.hh" +#include "music.hh" +#include "warn.hh" + void Change_iterator::error (String reason) { - Change_translator const * t = dynamic_cast (music_l_); - String to_type = t->change_to_type_str_; - String to_id = t->change_to_id_str_; + String to_type = ly_scm2string (get_music ()->get_mus_property ("change-to-type")); + String to_id = ly_scm2string (get_music ()->get_mus_property ("change-to-id")); String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) + ": " + reason; /* GUHG! */ - String warn2= "Change_iterator::do_process_and_next (): " - + report_to_l ()->type_str_ + " = `" - + report_to_l ()->id_str_ + "': "; + String warn2= "Change_iterator::process (): " + + report_to ()->type_string_ + " = `" + + report_to ()->id_string_ + "': "; warning (warn2); - t->origin ()->warning (warn1); + get_music ()->origin ()->warning (warn1); } /* move to construct_children ? */ void -Change_iterator::do_process_and_next (Moment m) +Change_iterator::process (Moment m) { - Translator_group * current = report_to_l (); + Translator_group * current = report_to (); Translator_group * last = 0; - Change_translator const * t = dynamic_cast (music_l_); - String to_type = t->change_to_type_str_; - String to_id = t->change_to_id_str_; + String to_type = ly_scm2string (get_music ()->get_mus_property ("change-to-type")); + String to_id = ly_scm2string (get_music ()->get_mus_property ("change-to-id")); + /* find the type of translator that we're changing. If \translator Staff = bass, then look for Staff = * */ - while (current && current->type_str_ != to_type) + while (current && current->type_string_ != to_type) { last = current; - current = current->daddy_trans_l_; + current = current->daddy_trans_; } - if (current && current->id_str_ == to_id) + if (current && current->id_string_ == to_id) { String msg; msg += _ ("Can't switch translators, I'm there already"); @@ -64,9 +64,9 @@ Change_iterator::do_process_and_next (Moment m) if (last) { Translator_group * dest = - report_to_l ()->find_create_translator_l (to_type, to_id); - current->remove_translator_p (last); - dest->add_group_translator (last); + report_to ()->find_create_translator (to_type, to_id); + current->remove_translator (last); + dest->add_used_group_translator (last); } else { @@ -74,13 +74,15 @@ Change_iterator::do_process_and_next (Moment m) We could change the current translator's id, but that would make errors hard to catch - last->translator_id_str_ = change_l ()->change_to_id_str_; + last->translator_id_string_ = get_change ()->change_to_id_string_; */ error (_ ("I'm one myself")); } else error (_ ("none of these in my family")); - Music_iterator::do_process_and_next (m); + Simple_music_iterator::process (m); } + +IMPLEMENT_CTOR_CALLBACK (Change_iterator);