]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/voice-group-regs.cc
release: 0.0.71pre
[lilypond.git] / lily / voice-group-regs.cc
index d789fda2b15c92ac20d81d3703bc40d9660d5399..b2fdd6cd947b25aff0e3e52ccc006f82f62948ac 100644 (file)
@@ -1,88 +1,62 @@
 /*
   voicegroup.cc -- implement Voice_group_registers
 
-  source file of the LilyPond music typesetter
+  source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-
+#include "music-list.hh"
 #include "proto.hh"
 #include "plist.hh"
-#include "musicalrequest.hh"
+#include "musical-request.hh"
 #include "voice-regs.hh"
 #include "voice-group-regs.hh"
 #include "register.hh"
-#include "text-reg.hh"
-#include "stem-beam-reg.hh"
-#include "script-reg.hh"
-#include "complex-walker.hh"
-#include "commandrequest.hh"
+#include "command-request.hh"
 #include "debug.hh"
-#include "dynamic-reg.hh"
+#include "input-register.hh"
+#include "time-description.hh"
 
-static int temp_id_count;
 
-Voice_group_registers::Voice_group_registers(String id)
+Voice_group_registers::Voice_group_registers()
 {
-    add(new Dynamic_register);
-    add(new Text_register);
-    add(new Stem_beam_register);
-    add(new Script_register);
-    
-    if (id=="")                        // UGH
-       id = __FUNCTION__ + String(temp_id_count++);
-    group_id_str_ = id;
+    dir_i_ =0;
 }
 
 bool
-Voice_group_registers::try_request(Request*r_l)
+Voice_group_registers::do_try_request(Request*r_l)
 {
-    for (int i=0; i < voice_regs_l_.size(); i++) {     
-       if (voice_regs_l_[i]->voice_l_ == r_l->voice_l())
-           goto gotcha;
-    }
-    return false;
-gotcha:
-    if (r_l->groupfeature()) {
-       set_feature(Features::dir(r_l->groupfeature()->stemdir_i_));
+    Command_req* c_l = r_l->command();
+    if (c_l&& c_l->groupfeature()) {
+       Feature f;
+       f.type_ = c_l->groupfeature()->type_str_;
+       f.value_ = c_l->groupfeature()->value_str_;
+       set_feature(f);
        return true;
     }
-    return Register_group_register::try_request(r_l);
+    return Register_group_register::do_try_request(r_l);
 }
 
 
-bool
-Voice_group_registers::static_acceptable_request_b(Request*r)
-{
-    return (r->stem() || r->beam() || r->text() || r->script() ||
-           r->groupfeature());
-}
+IMPLEMENT_STATIC_NAME(Voice_group_registers);
+IMPLEMENT_IS_TYPE_B1(Voice_group_registers,Register_group_register);
 
-void
-Voice_group_registers::terminate_register(Request_register*r_l)
-{
-    if (r_l->name() == Voice_registers::static_name()) {
-       for (int i=0; i <voice_regs_l_.size(); i++) {
-           if (r_l == voice_regs_l_[i])
-               voice_regs_l_.del(i);
-           Register_group_register::terminate_register(r_l);
-           return;
-       }
-    }
-    assert(false);
-}
 void
 Voice_group_registers::do_print() const
 {
 #ifndef NPRINT
-    mtor << "ID: " << group_id_str_<<"\n";
     Register_group_register::do_print();
 #endif
 }
-void
-Voice_group_registers::add(Request_register*r_l)
+
+
+
+Scalar
+Voice_group_registers::get_feature(String f)
 {
-    Register_group_register::add(r_l);
-    if (r_l->name() == Voice_registers::static_name())
-       voice_regs_l_.push( (Voice_registers*)r_l );
+    if (f == "vdir")
+       return dir_i_;
+    Register_group_register::get_feature(f);
 }
+
+ADD_THIS_REGISTER(Voice_group_registers);