]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/engraver-group-engraver.cc
new file: perform drum notes.
[lilypond.git] / lily / engraver-group-engraver.cc
index ebf38811470662eb97b98ea332e2a0a586192959..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,39 +32,9 @@ 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);
+
 void
 Engraver_group_engraver::acknowledge_grobs ()
 {
@@ -101,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);
        }
 
@@ -143,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);
@@ -163,7 +133,11 @@ Engraver_group_engraver::process_music ()
 void
 Engraver_group_engraver::initialize ()
 {
-  SCM tab = scm_make_vector (gh_int2scm (61), SCM_BOOL_F); // magic ->
+  /*
+    docme: why bool_f.
+    
+   */
+  SCM tab = scm_make_vector (gh_int2scm (61), SCM_BOOL_F);
   set_property ("acknowledgeHashTable", tab);
 
   Translator_group::initialize ();
@@ -174,7 +148,8 @@ Engraver_group_engraver::Engraver_group_engraver() {}
 ENTER_DESCRIPTION(Engraver_group_engraver,
 /* descr */       "A group of engravers taken together",
 /* creats*/       "",
-/* acks  */       "",
+/* accepts */     "",
+/* acks  */      "",
 /* reads */       "",
 /* write */       "");
 
@@ -183,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);
@@ -194,6 +170,7 @@ bool engraver_valid (Translator*tr, SCM ifaces)
 }
 
 
+
 SCM
 find_acknowledge_engravers (SCM gravlist, SCM meta_alist)
 {
@@ -210,3 +187,5 @@ find_acknowledge_engravers (SCM gravlist, SCM meta_alist)
 
   return l;
 }
+
+