-
-
-Engraver_group_engraver*
-Engraver_group_engraver::find_engraver_l (String n, String id)
-{
- if (name() == n && id_str_ == id)
- return this;
- Engraver_group_engraver * r = 0;
- for (int i =0; !r && i< group_l_arr_.size(); i++)
- {
- r = group_l_arr_[i]->find_engraver_l (n,id);
- }
-
- return r;
-}
-
-Translator*
-Engraver_group_engraver::find_get_translator_l (String n,String id)
-{
- Translator * ret=0;
- Input_translator * itrans_l= itrans_l_-> recursive_find ( n);
- if (itrans_l)
- {
- ret = find_engraver_l (n,id);
- if (!ret)
- {
- Engraver_group_engraver * group =
- itrans_l-> get_group_engraver_p();
-
- add (group);
- ret = group;
-
- if (group->itrans_l_->is_name_b (n) )
- ret ->id_str_ = id;
- else
- return ret->find_get_translator_l (n,id);
-
- }
- }
- else if (daddy_grav_l_)
- ret =daddy_grav_l_->find_get_translator_l (n,id);
- else
- {
- warning ("Can't find or create `" + n + "' called `" + id + "'\n");
- ret =0;
- }
- return ret;
-}
-
-int
-Engraver_group_engraver::depth_i()const
-{
- return daddy_grav_l_->depth_i() + 1;
-}
-
-Translator*
-Engraver_group_engraver::ancestor_l (int l)
-{
- if (!l || !daddy_grav_l_)
- return this;
-
- return daddy_grav_l_->ancestor_l (l-1);
-}
-
-void
-Engraver_group_engraver::announce_element (Score_elem_info info)
-{
- announce_info_arr_.push (info);
- Engraver::announce_element (info);
-}
-
-void
-Engraver_group_engraver::do_announces()
-{
- for (int i=0; i < group_l_arr_.size(); i++)
- {
- group_l_arr_[i]->do_announces();
- }
-
- Request dummy_req;
-
- for (int j =0; j < announce_info_arr_.size(); j++)
- {
- Score_elem_info info = announce_info_arr_[j];
-
- if (!info.req_l_)
- info.req_l_ = &dummy_req;
- for (int i=0; i < nongroup_l_arr_.size(); i++) { // Is this good enough?6
- if (nongroup_l_arr_[i] != info.origin_grav_l_arr_[0])
- nongroup_l_arr_[i]->acknowledge_element (info);
- }
- }
- announce_info_arr_.clear();
-}
-
-
-void
-Engraver_group_engraver::do_removal_processing()
-{
- for (PCursor<Engraver*> i (grav_list_.top()); i.ok (); i++)
- i->removal_processing();
-}
-
-Staff_info
-Engraver_group_engraver::get_staff_info()const
-{
- Staff_info inf = Engraver::get_staff_info();
-
- for (int i=0; i < nongroup_l_arr_.size(); i++)
- nongroup_l_arr_[i]->fill_staff_info (inf);
-
- return inf;
-}
-
-Translator*
-Engraver_group_engraver::get_default_interpreter()
-{
- // ?
- if ( is_bottom_engraver_b())
- return daddy_grav_l_->get_default_interpreter();
-
- Engraver_group_engraver *grav_p= itrans_l_->
- get_default_itrans_l()->get_group_engraver_p ();
- add (grav_p);
- if (grav_p->is_bottom_engraver_b())
- return grav_p;
- else
- return grav_p->get_default_interpreter();
-}
-
-bool
-Engraver_group_engraver::is_bottom_engraver_b()const
-{
- return !itrans_l_->get_default_itrans_l();
-}
-
-Engraver*
-Engraver_group_engraver::get_simple_engraver (char const *type)const
-{
- for (int i=0; i < nongroup_l_arr_.size(); i++)
- {
- if (nongroup_l_arr_[i]->name() == type)
- return nongroup_l_arr_[i];
- }
- if ( daddy_grav_l_)
- return daddy_grav_l_->get_simple_engraver (type);
- return 0;
-}
-