]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/translator-group.cc
release: 1.3.93
[lilypond.git] / lily / translator-group.cc
index dc1b92025a894ecdba9ee986d3ce2dcac5811ad4..24416817d00941fb8a32113d78cbf357e636f99a 100644 (file)
@@ -33,7 +33,8 @@ Translator_group::properties_dict () const
 
 Translator_group::~Translator_group ()
 {
-  assert (removable_b());
+  
+  //assert (removable_b());
 }
 
 
@@ -227,7 +228,8 @@ Translator_group::get_simple_translator (String type) const
 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*
@@ -235,8 +237,8 @@ Translator_group::get_default_interpreter()
 {
   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)
@@ -270,16 +272,12 @@ Translator_group::each (Method_pointer method)
   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));
@@ -304,15 +302,14 @@ Translator_group::where_defined (SCM sym) const
 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
@@ -340,8 +337,15 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va
        {
          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
        {