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(Feature d)
27 iter_top(reg_list_, i);
29 // this construction to ensure clean deletion
30 Request_register *reg_l = i++;
31 reg_l->set_feature(d);
36 Register_group_register::sync_features()
38 iter_top(reg_list_, i);
41 Request_register *reg_l = i++;
42 reg_l->sync_features();
47 Register_group_register::pre_move_processing()
49 iter_top(reg_list_, i);
51 // this construction to ensure clean deletion
52 Request_register *reg_l = i++;
53 reg_l->pre_move_processing();
58 Register_group_register::process_requests()
60 iter_top(reg_list_, i);
62 // this construction to ensure clean deletion
63 Request_register *reg_l = i++;
64 reg_l->process_requests();
69 Register_group_register::post_move_processing()
71 iter_top(reg_list_, i);
73 // this construction to ensure clean deletion
74 Request_register *reg_l = i++;
75 reg_l->post_move_processing();
80 Register_group_register::acknowledge_element(Staff_elem_info info)
82 Request_register* origin = info.origin_reg_l_arr_[0];
83 if (!contains_b(origin) && !origin->contains_b(this)) // am i sure?
86 for (iter_top(reg_list_, i); i.ok(); i++)
87 i->acknowledge_element(info);
91 Register_group_register::contains_b(Request_register* reg_l)const
93 bool parent_b = Request_register::contains_b(reg_l);
97 for (iter_top(reg_list_, j); j.ok(); j++)
98 if (j->contains_b(reg_l))
106 Register_group_register::try_request(Request*req_l)
108 iter_top(reg_list_, i);
112 // this construction to ensure clean deletion
113 Request_register *reg_l = i++;
114 if (reg_l->try_request( req_l ))
120 Register_group_register::add(Array<Request_register*> p_arr)
122 for (int i =0; i<p_arr.size(); i++)
127 Register_group_register::add(Request_register *reg_p)
129 reg_list_.bottom().add(reg_p);
130 reg_p->daddy_reg_l_ = this;
134 Register_group_register::~Register_group_register()
140 Register_group_register::get_register_p(Request_register*reg_l)
142 iterator(reg_list_) reg_cur= reg_list_.find(reg_l);
143 assert(reg_cur.ok());
144 return reg_cur.remove_p();
148 Register_group_register::terminate_register(Request_register*r_l)
150 delete get_register_p(r_l);
153 IMPLEMENT_STATIC_NAME(Register_group_register);
154 ADD_THIS_REGISTER(Register_group_register);
157 Register_group_register::do_print()const
160 for (iter_top(reg_list_, i); i.ok(); i++)