]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/command-request.hh
patch::: 0.0.75.jcn4: midi op
[lilypond.git] / lily / include / command-request.hh
index 3d5a1eb18d496d336700c1e2c873acad06d60060..285d0cbb8501cdadf961eed0f655b21d9a97ef0c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   command-request.hh -- declare Non musical requests
 
-  source file of the LilyPond music typesetter
+  source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
 /** Request which are  assumed to be "happening" before the
   musical requests. */
-struct Command_req : virtual Request {
+class Command_req  : public virtual Request  {
+public:
     REQUESTMETHODS(Command_req, command);
-
+    virtual Group_feature_req * groupfeature() { return 0; }
     virtual Measure_grouping_req * measuregrouping() { return 0; }
     virtual Clef_change_req * clefchange() { return 0; }
     virtual Key_change_req * keychange() { return 0; }
@@ -26,17 +27,27 @@ struct Command_req : virtual Request {
     virtual Bar_req *bar() { return 0; }
     virtual Cadenza_req *cadenza() { return 0; }
     virtual Timing_req*timing() {  return 0; }
+    virtual Command_script_req*commandscript() { return 0;}
+};
+
+
+class Command_script_req : public Command_req,  public Script_req {
+public:
+    REQUESTMETHODS(Command_script_req, commandscript);
 };
 
 
+
 /** Baseclass for meter/partial req. It has to be handled by
   Staff_{walker,column} baseclass.  */
-struct Timing_req : Command_req {
+class Timing_req  : public Command_req  {
+public:
     REQUESTMETHODS(Timing_req, timing);
 };
 
 
-struct Partial_measure_req : Timing_req {
+class Partial_measure_req  : public Timing_req  {
+public:
     Moment duration_;
 
     Partial_measure_req(Moment);
@@ -46,16 +57,19 @@ struct Partial_measure_req : Timing_req {
 /**
   todo: allow C meter
  */
-struct Meter_change_req : Timing_req {
+class Meter_change_req  : public Timing_req  {
+public:
     int beats_i_, one_beat_i_;
 
+    int compare(Meter_change_req const&);
     Meter_change_req();
     void set(int,int);
     REQUESTMETHODS(Meter_change_req, meterchange);
 };
 
 /// toggle Cadenza mode
-struct Cadenza_req : Timing_req {
+class Cadenza_req  : public Timing_req  {
+public:
     /// turn on?
     bool on_b_;
     Cadenza_req(bool);
@@ -63,52 +77,71 @@ struct Cadenza_req : Timing_req {
 };
 
 /// check if we're at start of a  measure.
-struct Barcheck_req : Timing_req {
+class Barcheck_req  : public Timing_req  {
+public:
 
     REQUESTMETHODS(Barcheck_req,barcheck);
 };
 
-struct Measure_grouping_req: Timing_req {
+class Measure_grouping_req : public Timing_req  {
+public:
     Array<int> beat_i_arr_;
     Array<Moment> elt_length_arr_;
 
     REQUESTMETHODS(Measure_grouping_req, measuregrouping);
 };
 
-struct Group_change_req : Command_req {
-    String newgroup_str_;
-    REQUESTMETHODS(Group_change_req, groupchange);
-};
-
 /** draw a (repeat)-bar. This something different than #Barcheck_req#,
   the latter should only happen at the start of a measure.  */
-struct Bar_req : Command_req {
+class Bar_req  : public Command_req  {
+public:
     String type_str_;
     Bar_req(String);
     int compare(const Bar_req&)const;
     REQUESTMETHODS(Bar_req,bar);
 };
-struct Terminate_voice_req : Command_req {
-    REQUESTMETHODS(Terminate_voice_req,terminate);
-};
 
-struct Group_feature_req : Command_req {
-    int stemdir_i_;
-    Group_feature_req();
+class Group_feature_req  : public Command_req  {
+public:
+    String type_str_;
+    String value_str_;
+    
     REQUESTMETHODS(Group_feature_req, groupfeature);
 };
 
 
-struct Key_change_req : Command_req {
+/**
+    Handle key changes.
+    Routines for sharps and flats are separated, 
+    so that caller may identify non-conventional keys.
+*/
+class Key_change_req  : public Command_req  {
+public:
     Array<Melodic_req*> melodic_p_arr_;
+    bool minor_b_;
 
+    /// don't ignore the  octaves in #melodic_p_arr_#?
+    bool multi_octave_b_;
     Key_change_req();
     Key_change_req(Key_change_req const&);
     ~Key_change_req();
     REQUESTMETHODS(Key_change_req, keychange);
+
+    /// squash the octaves to 1
+    void squash_octaves();
+    /// return number of flats in key
+    int flats_i();
+
+    /// return number of sharps in key
+    int sharps_i();
+
+    void transpose(Melodic_req const & d) const;
+    /// is minor key?
+    int minor_b();
 };
 
-struct Clef_change_req : Command_req {
+class Clef_change_req  : public Command_req  {
+public:
     String clef_str_;
     Clef_change_req(String);
     REQUESTMETHODS(Clef_change_req, clefchange);