X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftranslator-group.cc;h=e3f8cba3e8c7393b6a0ed493164c231842fb2541;hb=c832deb4718dfdc8bb8518e2872271cfe38b7dec;hp=73a9c602e031ebd3b17bf332b8001ac18d58c163;hpb=958e95822083954cad00e0a598eb9f12ceba67b9;p=lilypond.git diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 73a9c602e0..e3f8cba3e8 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -170,7 +170,6 @@ Translator_group::create_child_translator (SCM sev) type = get_translator (definition); else if (ly_is_pair (definition)) { - type = get_translator (ly_symbol2scm ("Scheme_engraver")); is_scheme = true; } else if (ly_is_procedure (definition)) @@ -179,17 +178,15 @@ Translator_group::create_child_translator (SCM sev) // an argument and evaluates to an a-list scheme engraver // definition. definition = scm_call_1 (definition, cs); - type = get_translator (ly_symbol2scm ("Scheme_engraver")); is_scheme = true; } - if (!type) + if (!is_scheme && !type) warning (_f ("cannot find: `%s'", ly_symbol2string (scm_car (s)).c_str ())); else { - Translator *instance = type->clone (); - if (is_scheme) - dynamic_cast (instance)->init_from_scheme (definition); + Translator *instance = is_scheme ? new Scheme_engraver (definition) + : type->clone (); SCM str = instance->self_scm (); @@ -346,7 +343,7 @@ Translator_group::~Translator_group () const char Translator_group::type_p_name_[] = "ly:translator-group?"; int -Translator_group::print_smob (SCM port, scm_print_state *) +Translator_group::print_smob (SCM port, scm_print_state *) const { scm_puts ("#