]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tweak-registration.cc
(accidental): NL
[lilypond.git] / lily / tweak-registration.cc
index c29aca1cb6793d7ac76da17d85c3cadb0fcf505a..9604c5f202bde81dd60e7e7a6a7917e3f4d301fa 100644 (file)
@@ -1,10 +1,9 @@
 /*
-  tweak-registration.cc --  implement Tweak_registry
+  tweak-registration.cc -- implement Tweak_registry
 
   source file of the GNU LilyPond music typesetter
 
   (c) 2004--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
 */
 
 #include "tweak-registration.hh"
@@ -39,14 +38,17 @@ Tweak_registry::insert_tweak_from_file (SCM tweak)
 {
   SCM skey = scm_car (tweak);
 
-  assert (scm_is_pair (skey) &&
-        scm_car (skey) == ly_symbol2scm ("key"));
+  assert (scm_is_pair (skey)
+         && scm_car (skey) == ly_symbol2scm ("key"));
 
   Object_key const *key = undumper_->get_key (scm_to_int (scm_cadr (skey)));
-  if (tweaks_.find (key) == tweaks_.end ())
-    tweaks_[key] = SCM_EOL;
 
-  tweaks_[key] = scm_cons (scm_cdr (tweak), tweaks_[key]);
+  SCM existing = SCM_EOL;
+  Tweak_map::const_iterator prev = tweaks_.find (key);
+  if (prev != tweaks_.end ())
+    existing = (*prev).second;
+
+  tweaks_[key] = scm_cons (scm_cdr (tweak), existing);
 }
 
 void
@@ -67,7 +69,7 @@ Tweak_registry::replace_grob_tweak (Grob *g, SCM tweak)
 }
 
 SCM
-Tweak_registry::get_tweaks (Grob *g) 
+Tweak_registry::get_tweaks (Grob *g)
 {
   Object_key const *key = g->get_key ();
   if (tweaks_.find (key) == tweaks_.end ())
@@ -94,7 +96,7 @@ Tweak_registry::list_tweaks ()
 SCM
 Tweak_registry::mark_smob (SCM smob)
 {
-  Tweak_registry *me = (Tweak_registry*) SCM_CELL_WORD_1 (smob);
+  Tweak_registry *me = (Tweak_registry *) SCM_CELL_WORD_1 (smob);
 
   for (Tweak_map::const_iterator i (me->tweaks_.begin ());
        i != me->tweaks_.end ();
@@ -106,7 +108,7 @@ Tweak_registry::mark_smob (SCM smob)
 
   if (me->undumper_)
     scm_gc_mark (me->undumper_->self_scm ());
-                     
+
   return SCM_EOL;
 }
 
@@ -114,11 +116,11 @@ int
 Tweak_registry::print_smob (SCM smob, SCM port, scm_print_state*)
 {
   (void) smob;                 // smother warning.
-  scm_puts ("#<Tweak_registry>", port); 
+  scm_puts ("#<Tweak_registry>", port);
   return 1;
 }
 
-Object_key_undumper*
+Object_key_undumper *
 Tweak_registry::undumper () const
 {
   return undumper_;
@@ -127,7 +129,6 @@ Tweak_registry::undumper () const
 IMPLEMENT_DEFAULT_EQUAL_P (Tweak_registry);
 IMPLEMENT_SMOBS (Tweak_registry);
 
-
 Tweak_registry *global_registry_;
 
 void