lilypond-0.0.40
[lilypond.git] / src / registergroup.cc
blob87652e5e5472429a96a5ac4422035ce512c4dadb
1 /*
2 registergroup.cc -- implement Register_group_register
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
9 #include "registergroup.hh"
10 #include "register.hh"
12 bool
13 Register_group_register::acceptable_request_b(Request* r)
15 for (iter_top(reg_list_, i); i.ok(); i++) {
16 if (i->acceptable_request_b(r))
17 return true;
19 return false;
22 void
23 Register_group_register::set_feature(Features d)
25 for (iter_top(reg_list_, i); i.ok(); i++) {
26 i->set_feature(d);
30 void
31 Register_group_register::pre_move_processing()
33 for (iter_top(reg_list_, i); i.ok(); i++)
34 i->pre_move_processing();
37 void
38 Register_group_register::process_requests()
40 for (iter_top(reg_list_, i); i.ok(); i++)
41 i->process_requests();
44 void
45 Register_group_register::post_move_processing()
47 for (iter_top(reg_list_, i); i.ok(); i++)
48 i->post_move_processing();
51 void
52 Register_group_register::acknowledge_element(Staff_elem_info info)
54 if (!contains_b(info.origin_reg_l_arr_[0]))
55 return;
57 for (iter_top(reg_list_, i); i.ok(); i++)
58 i->acknowledge_element(info);
61 bool
62 Register_group_register::contains_b(Request_register* reg_l)
64 bool parent_b = Request_register::contains_b(reg_l);
66 if (parent_b)
67 return true;
68 for (iter_top(reg_list_, j); j.ok(); j++)
69 if (j->contains_b(reg_l))
70 return true;
71 return false;
76 bool
77 Register_group_register::try_request(Request*req_l)
79 for (iter_top(reg_list_, i); i.ok(); i++)
80 if (i->try_request(req_l))
81 return true;
82 return false;
85 void
86 Register_group_register::add(Request_register *reg_p)
88 reg_list_.bottom().add(reg_p);
89 reg_p->daddy_reg_l_ = this;
93 Register_group_register::~Register_group_register()
98 Request_register *
99 Register_group_register::get_register_p(Request_register*reg_l)
101 iterator(reg_list_) reg_cur= reg_list_.find(reg_l);
102 assert(reg_cur.ok());
103 return reg_cur.get_p();
106 void
107 Register_group_register::terminate_register(Request_register*r_l)
109 delete get_register_p(r_l);
112 void
113 Register_group_register::do_print()const
115 #ifndef NPRINT
116 for (iter_top(reg_list_, i); i.ok(); i++)
117 i->print();
118 #endif