2 registergroup.cc -- implement Register_group_register
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
11 #include "register-group.hh"
12 #include "register.hh"
15 Register_group_register::acceptable_request_b(Request* r)const
17 for (iter_top(reg_list_, i); i.ok(); i++) {
18 if (i->acceptable_request_b(r))
25 Register_group_register::set_feature(Features d)
27 for (iter_top(reg_list_, i); i.ok(); i++) {
33 Register_group_register::pre_move_processing()
35 for (iter_top(reg_list_, i); i.ok(); i++)
36 i->pre_move_processing();
40 Register_group_register::process_requests()
42 for (iter_top(reg_list_, i); i.ok(); i++)
43 i->process_requests();
47 Register_group_register::post_move_processing()
49 iter_top(reg_list_, i);
51 // this construction to ensure clean deletion
52 Request_register *reg_l = i++;
53 reg_l->post_move_processing();
58 Register_group_register::acknowledge_element(Staff_elem_info info)
60 Request_register* origin = info.origin_reg_l_arr_[0];
61 if (!contains_b(origin) && !origin->contains_b(this))
64 for (iter_top(reg_list_, i); i.ok(); i++)
65 i->acknowledge_element(info);
69 Register_group_register::contains_b(Request_register* reg_l)const
71 bool parent_b = Request_register::contains_b(reg_l);
75 for (iter_top(reg_list_, j); j.ok(); j++)
76 if (j->contains_b(reg_l))
84 Register_group_register::try_request(Request*req_l)
86 iter_top(reg_list_, i);
90 // this construction to ensure clean deletion
91 Request_register *reg_l = i++;
92 if (reg_l->try_request( req_l ))
98 Register_group_register::add(Array<Request_register*> p_arr)
100 for (int i =0; i<p_arr.size(); i++)
105 Register_group_register::add(Request_register *reg_p)
107 reg_list_.bottom().add(reg_p);
108 reg_p->daddy_reg_l_ = this;
112 Register_group_register::~Register_group_register()
118 Register_group_register::get_register_p(Request_register*reg_l)
120 iterator(reg_list_) reg_cur= reg_list_.find(reg_l);
121 assert(reg_cur.ok());
122 return reg_cur.remove_p();
126 Register_group_register::terminate_register(Request_register*r_l)
128 delete get_register_p(r_l);
131 IMPLEMENT_STATIC_NAME(Register_group_register);
132 ADD_THIS_REGISTER(Register_group_register);
135 Register_group_register::do_print()const
138 for (iter_top(reg_list_, i); i.ok(); i++)