]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/engraver-group-engraver.cc
2003 -> 2004
[lilypond.git] / lily / engraver-group-engraver.cc
index 9a39034b379b7f8f765bc684ef3de3fb8a2fada8..0cbdd68c08fee9dc0ba2f6a80a51dc0a50a1bd8b 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  engravergroup.cc -- implement Engraver_group_engraver
-
+  engraver-group-engraver.cc -- implement Engraver_group_engraver
+  
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "flower-proto.hh"
@@ -23,7 +23,7 @@ Engraver_group_engraver::announce_grob (Grob_info info)
 void
 Engraver_group_engraver::process_acknowledged_grobs_in_simple_children ()
 {
-  for (SCM p = simple_trans_list_; gh_pair_p (p); p = ly_cdr (p))
+  for (SCM p = get_simple_trans_list (); gh_pair_p (p); p = ly_cdr (p))
     {
       Translator * t = unsmob_translator (ly_car (p));
       Engraver * eng = dynamic_cast<Engraver*> (t);
@@ -32,38 +32,6 @@ Engraver_group_engraver::process_acknowledged_grobs_in_simple_children ()
     }
 }
 
-/*
-
-  Done: eliminating useless broadcast/acknowledge
-
-
-One cause for translation slowness: grob broadcasted/acknowledges
- (b/a): every grob is b/a-ed to all peer-engravers and all
-parent-engravers. This means that lots of (often) useless b/a is done
-for large scores (the top-level engravers gets to know every detail of
-every voice, thread, etc. Measurements indicate this is 10% of the
- interpretation time:
-
- standchen
-
-old: (pre 1.5.13)  10.28
-new: 8.73
-speedup: 15 %
-
-Coriolan:
-
-new: 197.59
-old: 219.12 seconds
-speedup: 10%
-
-
-The cost of this B/A is # of useless engravers * cost of one ack,
-which is rather low, since cost of one ack is only an interface check.
-The cost of precomputing engraver lists has two elts: computing the
-list itself, GC for the structure, looking up the list during the
-acks.
-
-*/
 SCM find_acknowledge_engravers (SCM gravlist, SCM meta);
 SCM find_accept_engravers (SCM gravlist, SCM music_descr);
 
@@ -103,7 +71,7 @@ Engraver_group_engraver::acknowledge_grobs ()
       SCM acklist = scm_hashq_ref (tab, nm, SCM_UNDEFINED);
       if (acklist == SCM_BOOL_F)
        {
-         acklist= find_acknowledge_engravers (gh_cons (self_scm (), simple_trans_list_), meta);
+         acklist = find_acknowledge_engravers (gh_cons (self_scm (), get_simple_trans_list ()), meta);
          scm_hashq_set_x (tab, nm, acklist);
        }
 
@@ -145,7 +113,7 @@ Engraver_group_engraver::do_announces ()
 void
 Engraver_group_engraver::process_music ()
 {
-   for (SCM p = simple_trans_list_; gh_pair_p (p); p =ly_cdr (p))
+   for (SCM p = get_simple_trans_list (); gh_pair_p (p); p =ly_cdr (p))
     {
       Translator * t = unsmob_translator (ly_car (p));
       Engraver * eng = dynamic_cast<Engraver*> (t);
@@ -190,7 +158,8 @@ ENTER_DESCRIPTION(Engraver_group_engraver,
 /*****************/
 
 
-bool engraver_valid (Translator*tr, SCM ifaces)
+bool
+engraver_valid (Translator*tr, SCM ifaces)
 {
   SCM ack_ifs = scm_assoc (ly_symbol2scm ("interfaces-acked"), tr->translator_description());
   ack_ifs = gh_cdr (ack_ifs);