+
+/*
+ PRE_INIT_OPS is in the order specified, and hence must be reversed.
+ */
+void
+apply_property_operations (Translator_group*tg, SCM pre_init_ops)
+{
+ SCM correct_order = scm_reverse (pre_init_ops);
+ for (SCM s = correct_order; gh_pair_p (s); s = ly_cdr (s))
+ {
+ SCM entry = ly_car (s);
+ SCM type = ly_car (entry);
+ entry = ly_cdr (entry);
+
+ if (type == ly_symbol2scm ("push") || type == ly_symbol2scm ("poppush"))
+ {
+ SCM val = ly_cddr (entry);
+ val = gh_pair_p (val) ? ly_car (val) : SCM_UNDEFINED;
+
+ tg->execute_pushpop_property (ly_car (entry), ly_cadr (entry), val);
+ }
+ else if (type == ly_symbol2scm ("assign"))
+ {
+ tg->internal_set_property (ly_car (entry), ly_cadr (entry));
+ }
+ }
+}
+
+SCM
+names_to_translators (SCM namelist, Translator_group*tg)
+{
+ SCM l = SCM_EOL;
+ for (SCM s = namelist; gh_pair_p (s) ; s = ly_cdr (s))
+ {
+ Translator * t = get_translator (ly_car (s));
+ if (!t)
+ warning (_f ("can't find: `%s'", s));
+ else
+ {
+ Translator * tr = t->clone ();
+ SCM str = tr->self_scm ();
+ l = gh_cons (str, l);
+
+ tr->daddy_trans_ = tg;
+ tr->output_def_ = tg->output_def_;
+
+ scm_gc_unprotect_object (str);
+ }
+ }
+ return l;
+}
+
+
+SCM
+Translator_group::get_simple_trans_list ()
+{
+ return simple_trans_list_;
+
+}
+
+
+
+#if 0
+SCM
+Translator_group::get_simple_trans_list ()
+{
+ if (simple_trans_list_ != SCM_BOOL_F)
+ return simple_trans_list_;
+
+ Context_def * td = unsmob_context_def (definition_);
+
+ /*
+ The following cannot work, since start_translation_timestep ()
+ triggers this code, and start_translation_timestep happens before
+ \property Voice.Voice =#'()
+
+ */
+ trans_names = td->get_translator_names (SCM_EOL);
+
+ SCM trans_names = internal_get_property (td->get_context_name ());
+ if (!gh_pair_p (trans_names))
+ {
+ }
+
+ simple_trans_list_ = names_to_translators (trans_names, this);
+
+
+ static_each (simple_trans_list_, &Translator::initialize);
+ return simple_trans_list_;
+}
+#endif