Translator_group::~Translator_group ()
{
- assert (removable_b());
+
+ //assert (removable_b());
}
bool
Translator_group::is_bottom_translator_b () const
{
- return unsmob_translator_def (definition_)->accepts_name_list_ == SCM_EOL;
+ return !gh_string_p (unsmob_translator_def (definition_)->default_child_context_name ());
+
}
Translator_group*
{
if (!is_bottom_translator_b ())
{
- SCM nm = unsmob_translator_def (definition_)->accepts_name_list_;
- SCM st = output_def_l ()->find_translator_l (gh_car (nm));
+ SCM nm = unsmob_translator_def (definition_)->default_child_context_name ();
+ SCM st = output_def_l ()->find_translator_l (nm);
Translator_def *t = unsmob_translator_def (st);
if (!t)
static_each (trans_group_list_, method);
}
-void
-Translator_group::do_print() const
-{
-#ifndef NPRINT
-#endif
-}
+
void
Translator_group::do_add_processing ()
{
+ unsmob_translator_def (definition_)->apply_property_operations (this);
for (SCM s = simple_trans_list_; gh_pair_p (s) ; s = gh_cdr (s))
{
Translator * t = unsmob_translator (gh_car (s));
SCM
Translator_group::get_property (SCM sym) const
{
- if (properties_dict ()->elem_b (sym))
- {
- return properties_dict ()->get (sym);
- }
+ SCM val =SCM_UNDEFINED;
+ if (properties_dict ()->try_retrieve (sym, &val))
+ return val;
if (daddy_trans_l_)
return daddy_trans_l_->get_property (sym);
- return SCM_UNDEFINED;
+ return val;
}
void
{
SCM prev = get_property (prop);
- prev = gh_cons (gh_cons (eltprop, val), prev);
- set_property (prop, prev);
+ /*
+ we don't tack onto SCM_UNDEFINED, because it creates
+ errors down the line, if we do scm_assoc().
+ */
+ if (gh_pair_p (prev) || prev == SCM_EOL)
+ {
+ prev = gh_cons (gh_cons (eltprop, val), prev);
+ set_property (prop, prev);
+ }
}
else
{