#include "associter.hh"
#include "script.hh"
#include "musicalrequest.hh"
+#include "staffcolumn.hh"
#include "voice.hh"
#include "pscore.hh"
#include "complexstaff.hh"
#include "debug.hh"
-#include "voicegroup.hh"
+#include "voicegroupregs.hh"
+#include "voiceregs.hh"
#include "complexwalker.hh"
#include "misc.hh"
#include "commandrequest.hh"
-#include "clefreg.hh"
-#include "localkeyreg.hh"
-#include "keyreg.hh"
-#include "meterreg.hh"
-#include "barreg.hh"
+#include "walkregs.hh"
void
Request dummy_req;
for (int i = 0; i < announce_info_arr_.size(); i++){
Staff_elem_info info = announce_info_arr_[i];
+
if (!info.req_l_)
info.req_l_ = &dummy_req;
-
+
+ walk_regs_p_->acknowledge_element(info);
for (iter_top(voice_reg_list_,j); j.ok(); j++) {
j->acknowledge_element(info);
}
for (iter_top ( group_reg_list_, j); j.ok(); j++) {
j->acknowledge_element(info);
}
- bar_reg_p_->acknowledge_element(info);
- clef_reg_p_->acknowledge_element(info);
- key_reg_p_->acknowledge_element(info);
- meter_reg_p_->acknowledge_element(info);
-
- local_key_reg_p_->acknowledge_element(info);
}
}
}
bool
-Complex_walker::try_command_request(Nonmusical_req *req_l)
+Complex_walker::try_command_request(Command_req *req_l)
{
bool b=false;
Voice *voice_l = (Voice*)req_l->elt_l_->voice_l_; // ugh
Voice_group_registers* reg_l = get_voice_group(voice_l);
b |= reg_l->try_request(req_l);
} else {
- if (!b)
- b |= bar_reg_p_->try_request(req_l);
- b |= clef_reg_p_->try_request(req_l);
- if (!b)
- b |= key_reg_p_->try_request(req_l);
- if (!b)
- b |= meter_reg_p_->try_request(req_l);
+ b |= walk_regs_p_->try_request(req_l);
}
return b;
}
bool b=false;
Voice *voice_l = (Voice*)req->elt_l_->voice_l_; // ahh. This sux
- if (req->nonmus()) {
- b = try_command_request(req->nonmus());
- } else if (Voice_registers::acceptable_request(req)) {
+ if (req->command()) {
+ b = try_command_request(req->command());
+ } else if (Voice_registers::acceptable_request_b(req)) {
Voice_registers *vregs_l = get_voice_reg(voice_l);
b = vregs_l->try_request(req);
- } else if (Voice_group_registers::acceptable_request(req)){
+ } else if (Voice_group_registers::acceptable_request_b(req)){
Voice_group_registers* reg_l = get_voice_group(voice_l);
b = reg_l->try_request(req);
}
void
Complex_walker::regs_process_requests()
{
+ walk_regs_p_->process_requests();
for (iter_top(voice_reg_list_, j); j.ok(); j++) {
j->process_requests();
}
for (iter_top(group_reg_list_, j); j.ok(); j++)
j->process_requests();
-
-
- bar_reg_p_->process_request();
- clef_reg_p_->process_request();
- key_reg_p_->process_request();
- meter_reg_p_->process_request();
- local_key_reg_p_->process_request();
}
void
Complex_walker::Complex_walker(Complex_staff*s)
: Staff_walker(s, s->pstaff_l_->pscore_l_)
{
- local_key_reg_p_= new Local_key_register(this);
- clef_reg_p_= new Clef_register(this);
- key_reg_p_ = new Key_register(this);
- bar_reg_p_ = new Bar_register(this);
- meter_reg_p_ = new Meter_register(this);
-
+ walk_regs_p_ = new Walker_registers(this);
do_post_move();
}
Complex_walker::~Complex_walker()
{
- delete local_key_reg_p_;
- delete clef_reg_p_;
- delete meter_reg_p_;
- delete bar_reg_p_;
- delete key_reg_p_;
}
int
void
Complex_walker::do_pre_move()
{
+ walk_regs_p_->pre_move_processing();
for (iter_top(voice_reg_list_,i); i.ok(); i++) {
i->pre_move_processing();
}
for (iter_top (group_reg_list_, j); j.ok(); j++)
j->pre_move_processing();
- local_key_reg_p_->pre_move_processing();
- bar_reg_p_->pre_move_processing();
- clef_reg_p_->pre_move_processing();
- key_reg_p_->pre_move_processing();
- meter_reg_p_->pre_move_processing();
ptr()->typeset_breakable_items(prebreak_item_p_arr_,
nobreak_item_p_arr_,
void
Complex_walker::do_post_move()
{
+ walk_regs_p_->post_move_processing();
for (iter_top(voice_reg_list_,i); i.ok(); i++) {
i->post_move_processing();
}
announce_info_arr_.set_size(0);
for (iter_top (group_reg_list_, j); j.ok(); j++)
j->post_move_processing();
-
- local_key_reg_p_->post_move_processing();
- bar_reg_p_->post_move_processing();
- clef_reg_p_->post_move_processing();
- key_reg_p_->post_move_processing();
- meter_reg_p_->post_move_processing();
-
}
Array<Voice_registers*>