-Engraver_group_engraver::add(Engraver *grav_p)
-{
- grav_list_.bottom().add(grav_p);
- grav_p->daddy_grav_l_ = this;
+Engraver_group::acknowledge_grobs ()
+{
+ if (!announce_infos_.size ())
+ return;
+
+ SCM name_sym = ly_symbol2scm ("name");
+ SCM meta_sym = ly_symbol2scm ("meta");
+
+ for (vsize j = 0; j < announce_infos_.size (); j++)
+ {
+ Grob_info info = announce_infos_[j];
+
+ SCM meta = info.grob ()->internal_get_property (meta_sym);
+ SCM nm = scm_assoc (name_sym, meta);
+ if (scm_is_pair (nm))
+ nm = scm_cdr (nm);
+ else
+ continue;
+
+ SCM acklist = scm_hashq_ref (acknowledge_hash_table_drul_[info.start_end ()],
+ nm, SCM_BOOL_F);
+
+ Engraver_dispatch_list *dispatch
+ = Engraver_dispatch_list::unsmob (acklist);
+
+ if (acklist == SCM_BOOL_F)
+ {
+ SCM ifaces
+ = scm_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta));
+ acklist = Engraver_dispatch_list::create (get_simple_trans_list (),
+ ifaces, info.start_end ());
+
+ dispatch
+ = Engraver_dispatch_list::unsmob (acklist);
+
+ scm_hashq_set_x (acknowledge_hash_table_drul_[info.start_end ()], nm, acklist);
+ }