2 voicegroup.cc -- implement Voice_group_registers
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #include "musicalrequest.hh"
11 #include "voice-regs.hh"
12 #include "voice-group-regs.hh"
13 #include "register.hh"
14 #include "text-reg.hh"
15 #include "stem-beam-reg.hh"
16 #include "script-reg.hh"
17 #include "complex-walker.hh"
18 #include "commandrequest.hh"
21 static int temp_id_count
;
23 Voice_group_registers::Voice_group_registers(String id
)
25 add(new Text_register
);
26 add(new Stem_beam_register
);
27 add(new Script_register
);
30 id
= __FUNCTION__
+ String(temp_id_count
++);
35 Voice_group_registers::try_request(Request
*r_l
)
37 for (int i
=0; i
< voice_regs_l_
.size(); i
++) {
38 if (voice_regs_l_
[i
]->voice_l_
== r_l
->voice_l())
43 if (r_l
->groupfeature()) {
44 set_feature(Features::dir(r_l
->groupfeature()->stemdir_i_
));
47 return Register_group_register::try_request(r_l
);
52 Voice_group_registers::static_acceptable_request_b(Request
*r
)
54 return (r
->stem() || r
->beam() || r
->text() || r
->script() ||
59 Voice_group_registers::terminate_register(Request_register
*r_l
)
61 if (r_l
->name() == Voice_registers::static_name()) {
62 for (int i
=0; i
<voice_regs_l_
.size(); i
++) {
63 if (r_l
== voice_regs_l_
[i
])
65 Register_group_register::terminate_register(r_l
);
72 Voice_group_registers::do_print() const
75 mtor
<< "ID: " << group_id_str_
<<"\n";
76 Register_group_register::do_print();
80 Voice_group_registers::add(Request_register
*r_l
)
82 Register_group_register::add(r_l
);
83 if (r_l
->name() == Voice_registers::static_name())
84 voice_regs_l_
.push( (Voice_registers
*)r_l
);