source file of the GNU LilyPond music typesetter
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "change-iterator.hh"
#include "translator-group.hh"
-#include "change-translator.hh"
+#include "music.hh"
#include "debug.hh"
void
Change_iterator::error (String reason)
{
- Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_);
- String to_type = t->change_to_type_str_;
- String to_id = t->change_to_id_str_;
+ String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+ String to_id = ly_scm2string (music_l ()->get_mus_property ("change-to-id"));
String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id)
+ ": " + reason;
+ report_to_l ()->type_str_ + " = `"
+ report_to_l ()->id_str_ + "': ";
warning (warn2);
- t->origin ()->warning (warn1);
+ music_l ()->origin ()->warning (warn1);
}
/*
Translator_group * current = report_to_l ();
Translator_group * last = 0;
- Change_translator const * t = dynamic_cast<Change_translator const*> (music_l_);
- String to_type = t->change_to_type_str_;
- String to_id = t->change_to_id_str_;
+ String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+ String to_id = ly_scm2string (music_l ()->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_str_ != to_type)
{
last = current;
current = current->daddy_trans_l_;
Translator_group * dest =
report_to_l ()->find_create_translator_l (to_type, to_id);
current->remove_translator_p (last);
- dest->add_group_translator (last);
+ dest->add_used_group_translator (last);
}
else
{
}
+
+IMPLEMENT_CTOR_CALLBACK (Change_iterator);