=item *
Bash. Most scripts will continue to work with a stock sh, but they
-will generate (harmless) syntax errors
+might generate (harmless) syntax errors
=item *
GNU make.
type = t;
}
+IMPLEMENT_STATIC_NAME(Bar);
+
void
Bar::do_print()const
{
out->translate(Offset(x0 - left->hpos,0));
}
+IMPLEMENT_STATIC_NAME(Beam);
+
void
Beam::do_print()const
{
pcol_l_ = 0;
}
+IMPLEMENT_STATIC_NAME(Item);
+
void
Item::do_print() const
{
dots = r_req_l->duration_.dots_i_;
}
+IMPLEMENT_STATIC_NAME(Notehead);
+
void
Notehead::do_print()const
{
--- /dev/null
+/*
+ registergroup.cc -- implement Register_group_register
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "proto.hh"
+#include "plist.hh"
+#include "register-group.hh"
+#include "register.hh"
+
+bool
+Register_group_register::acceptable_request_b(Request* r)
+{
+ for (iter_top(reg_list_, i); i.ok(); i++) {
+ if (i->acceptable_request_b(r))
+ return true;
+ }
+ return false;
+}
+
+void
+Register_group_register::set_feature(Features d)
+{
+ for (iter_top(reg_list_, i); i.ok(); i++) {
+ i->set_feature(d);
+ }
+}
+
+void
+Register_group_register::pre_move_processing()
+{
+ for (iter_top(reg_list_, i); i.ok(); i++)
+ i->pre_move_processing();
+}
+
+void
+Register_group_register::process_requests()
+{
+ for (iter_top(reg_list_, i); i.ok(); i++)
+ i->process_requests();
+}
+
+void
+Register_group_register::post_move_processing()
+{
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+ // this construction to ensure clean deletion
+ Request_register *reg_l = i++;
+ reg_l->post_move_processing();
+ }
+}
+
+void
+Register_group_register::acknowledge_element(Staff_elem_info info)
+{
+ if (!contains_b(info.origin_reg_l_arr_[0]))
+ return;
+
+ for (iter_top(reg_list_, i); i.ok(); i++)
+ i->acknowledge_element(info);
+}
+
+bool
+Register_group_register::contains_b(Request_register* reg_l)
+{
+ bool parent_b = Request_register::contains_b(reg_l);
+
+ if (parent_b)
+ return true;
+ for (iter_top(reg_list_, j); j.ok(); j++)
+ if (j->contains_b(reg_l))
+ return true;
+ return false;
+}
+
+
+
+bool
+Register_group_register::try_request(Request*req_l)
+{
+ iter_top(reg_list_, i);
+ while (i.ok()) {
+
+
+ // this construction to ensure clean deletion
+ Request_register *reg_l = i++;
+ if (reg_l->try_request( req_l ))
+ return true;
+ }
+ return false;
+}
+
+void
+Register_group_register::add(Request_register *reg_p)
+{
+ reg_list_.bottom().add(reg_p);
+ reg_p->daddy_reg_l_ = this;
+}
+
+
+Register_group_register::~Register_group_register()
+{
+
+}
+
+Request_register *
+Register_group_register::get_register_p(Request_register*reg_l)
+{
+ iterator(reg_list_) reg_cur= reg_list_.find(reg_l);
+ assert(reg_cur.ok());
+ return reg_cur.remove_p();
+}
+
+void
+Register_group_register::terminate_register(Request_register*r_l)
+{
+ delete get_register_p(r_l);
+}
+
+IMPLEMENT_STATIC_NAME(Register_group_register);
+
+void
+Register_group_register::do_print()const
+{
+#ifndef NPRINT
+ for (iter_top(reg_list_, i); i.ok(); i++)
+ i->print();
+#endif
+}
#include "complex-walker.hh"
#include "local-key-item.hh"
#include "complex-staff.hh"
-#include "registergroup.hh"
+#include "register-group.hh"
#include "debug.hh"
#endif
}
+IMPLEMENT_STATIC_NAME(Request_register);
+
void
Request_register::do_print()const
{
}
+IMPLEMENT_STATIC_NAME(Rest);
+
void
Rest::do_print()const
{
+IMPLEMENT_STATIC_NAME(Spanner);
+
void
Spanner::do_print()const
{
no_lines_i_ = l;
}
+IMPLEMENT_STATIC_NAME(Staff_symbol);
+
void
Staff_symbol::do_print()const
{
stem_xoffset=0;
}
+IMPLEMENT_STATIC_NAME(Stem);
+
void
Stem::do_print() const
{
support = 0;
}
+IMPLEMENT_STATIC_NAME(Text_spanner);
+
void
Text_spanner::do_print() const
{
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
-
+#include "voice.hh"
#include "proto.hh"
#include "plist.hh"
#include "musical-request.hh"
if (id=="") // UGH
id = __FUNCTION__ + String(temp_id_count++);
group_id_str_ = id;
+ termination_mom_ = 0;
}
bool
for (int i=0; i <voice_regs_l_.size(); i++) {
if (r_l == voice_regs_l_[i])
voice_regs_l_.del(i);
+ mtor << "Terminating voice_reg " ;
Register_group_register::terminate_register(r_l);
return;
}
}
assert(false);
}
+IMPLEMENT_STATIC_NAME(Voice_group_registers);
+
void
Voice_group_registers::do_print() const
{
#ifndef NPRINT
mtor << "ID: " << group_id_str_<<"\n";
+ mtor << "stopping at " << termination_mom_ << "\n";
Register_group_register::do_print();
#endif
}
Voice_group_registers::add(Request_register*r_l)
{
Register_group_register::add(r_l);
- if (r_l->name() == Voice_registers::static_name())
- voice_regs_l_.push( (Voice_registers*)r_l );
+ if (r_l->name() == Voice_registers::static_name()) {
+ Voice_registers * vregs_l = (Voice_registers*)r_l;
+ voice_regs_l_.push( vregs_l );
+ Voice *v_l = vregs_l->voice_l_;
+ termination_mom_ = termination_mom_ >? v_l -> last();
+ mtor << "adding Voice_registers, now terminating at " <<
+ termination_mom_<< "\n";
+ }
+}
+
+void
+Voice_group_registers::post_move_processing()
+{
+ if ( get_staff_info().time_C_ ->when_ > termination_mom_ ){
+ mtor << "Terminating voice_group\n";
+ daddy_reg_l_->terminate_register(this);
+ }
+ Register_group_register::post_move_processing();
}
bool
Voice_registers::acceptable_request_b(Request*r)
{
-// return (r->rest() || r->note() || r->slur() || r->groupchange());
- return r->groupchange()
+ Command_req * c_l = r->command();
+ return r->groupchange() || (c_l&&c_l->terminate())
|| Register_group_register::acceptable_request_b(r);
}
+IMPLEMENT_STATIC_NAME(Voice_registers);
+
void
Voice_registers::do_print() const
{
+#ifndef NPRINT
mtor << "Voice= " << voice_l_<<'\n';
Register_group_register::do_print();
+#endif
}