]> git.donarmstrong.com Git - lilypond.git/blob - lily/voice-group-regs.cc
release: 0.0.68pre
[lilypond.git] / lily / voice-group-regs.cc
1 /*
2   voicegroup.cc -- implement Voice_group_registers
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8 #include "music-list.hh"
9 #include "proto.hh"
10 #include "plist.hh"
11 #include "musical-request.hh"
12 #include "voice-regs.hh"
13 #include "voice-group-regs.hh"
14 #include "register.hh"
15 #include "command-request.hh"
16 #include "debug.hh"
17 #include "input-register.hh"
18 #include "time-description.hh"
19
20
21 Voice_group_registers::Voice_group_registers()
22 {
23     dir_i_ =0;
24     termination_mom_ = INFTY; 
25 }
26
27 bool
28 Voice_group_registers::do_try_request(Request*r_l)
29 {
30     Command_req* c_l = r_l->command();
31     if (c_l&& c_l->groupfeature()) {
32         Feature f;
33         f.type_ = c_l->groupfeature()->type_str_;
34         f.value_ = c_l->groupfeature()->value_str_;
35         set_feature(f);
36         return true;
37     }
38     return Register_group_register::do_try_request(r_l);
39 }
40
41
42 IMPLEMENT_STATIC_NAME(Voice_group_registers);
43 IMPLEMENT_IS_TYPE_B1(Voice_group_registers,Register_group_register);
44
45 void
46 Voice_group_registers::do_print() const
47 {
48 #ifndef NPRINT
49     Register_group_register::do_print();
50 #endif
51 }
52
53 void
54 Voice_group_registers::do_post_move_processing()
55 {
56     if ( get_staff_info().time_C_ ->when_ > termination_mom_ ){
57         mtor << "Terminating voice_group\n";
58         daddy_reg_l_->terminate_register(this);
59         return ;
60     }
61     Register_group_register::do_post_move_processing();
62 }
63
64
65
66 Scalar
67 Voice_group_registers::get_feature(String f)
68 {
69     if (f == "vdir")
70         return dir_i_;
71     Register_group_register::get_feature(f);
72 }
73
74 ADD_THIS_REGISTER(Voice_group_registers);