]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/property-iterator.cc
release: 1.5.29
[lilypond.git] / lily / property-iterator.cc
index 171a872b3f6ec27fa2706bae2013f44e3aa3c35b..726a79bf1da9553cd2af25af05dbb95b37693329 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "property-iterator.hh"
 void
 Property_iterator::process (Moment m)
 {
-  SCM sym = music_l_->get_mus_property ("symbol");
+  SCM sym = music_l ()->get_mus_property ("symbol");
   if (gh_symbol_p (sym))
     {
-      SCM val = music_l_->get_mus_property ("value");
+      SCM val = music_l ()->get_mus_property ("value");
       bool ok= true;
       if (val != SCM_EOL)
        ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?"));
       if (ok)
-       report_to_l ()->set_property (sym, val);
+       report_to_l ()->internal_set_property (sym, val);
     }
   Simple_music_iterator::process (m);
 }
 
+void
+Property_unset_iterator::process (Moment m)
+{
+  SCM sym = music_l ()->get_mus_property ("symbol");
+  if (gh_symbol_p (sym))
+    {
+      report_to_l ()->unset_property (sym);
+    }
+  Simple_music_iterator::process (m);
+}
+
+
 void
 Push_property_iterator::process (Moment m)
 {
-  SCM syms = music_l_->get_mus_property ("symbols");
-  SCM eprop = music_l_->get_mus_property ("grob-property");
-  SCM val = music_l_->get_mus_property ("grob-value");
+  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM eprop = music_l ()->get_mus_property ("grob-property");
+  SCM val = music_l ()->get_mus_property ("grob-value");
 
-  if (to_boolean (music_l_->get_mus_property ("pop-first")))
+  if (to_boolean (music_l ()->get_mus_property ("pop-first")))
     Translator_def::apply_pushpop_property (report_to_l (),
                                            syms, eprop, SCM_UNDEFINED);
 
@@ -50,13 +62,15 @@ Push_property_iterator::process (Moment m)
 void
 Pop_property_iterator::process (Moment m)
 {
-  SCM syms = music_l_->get_mus_property ("symbols");
-  SCM eprop = music_l_->get_mus_property ("grob-property");
+  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM eprop = music_l ()->get_mus_property ("grob-property");
   Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED);
   
   Simple_music_iterator::process (m);
 }
 
+
 IMPLEMENT_CTOR_CALLBACK (Pop_property_iterator);
 IMPLEMENT_CTOR_CALLBACK (Push_property_iterator);
 IMPLEMENT_CTOR_CALLBACK (Property_iterator);
+IMPLEMENT_CTOR_CALLBACK (Property_unset_iterator);