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
++)