source file of the GNU LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#define COMMANDREQUEST_HH
#include "request.hh"
-#include "varray.hh"
+#include "array.hh"
#include "duration.hh"
+#include "musical-pitch.hh"
/** Request which are assumed to be "happening" before the
- musical requests. */
+ musical requests. Not coupled to a note or rest. */
class Command_req : public virtual Request {
public:
- REQUESTMETHODS(Command_req, command);
- virtual Measure_grouping_req * measuregrouping() { return 0; }
- virtual Clef_change_req * clefchange() { return 0; }
- virtual Key_change_req * keychange() { return 0; }
- virtual Partial_measure_req * partial() { return 0; }
- virtual Meter_change_req * meterchange() { return 0; }
- virtual Bar_req *bar() { return 0; }
- virtual Cadenza_req *cadenza() { return 0; }
- virtual Disallow_break_req *disallowbreak() { return 0; }
- virtual Timing_req*timing() { return 0; }
- virtual Command_script_req*commandscript() { return 0;}
- virtual Break_force_req *forcebreak () { return 0; }
+ REQUESTMETHODS(Command_req);
+
};
-class Break_force_req : public Command_req {
+class Break_req : public Command_req {
+public:
+ enum { DISALLOW = -10000, FORCE = 10000 };
+ int penalty_i_;
+ Break_req ();
+ REQUESTMETHODS (Break_req);
+};
+
+class Mark_req : public Command_req {
public:
- REQUESTMETHODS(Break_force_req, forcebreak);
+ Mark_req (String);
+ String str_;
+ REQUESTMETHODS (Mark_req);
};
class Command_script_req : public Command_req, public Script_req {
// huh?
Command_script_req();
~Command_script_req();
- REQUESTMETHODS(Command_script_req, commandscript);
+ REQUESTMETHODS(Command_script_req);
};
-
-class Disallow_break_req : public Command_req {
+class Command_tie_req : public Command_req {
public:
- REQUESTMETHODS(Disallow_break_req, disallowbreak);
+ REQUESTMETHODS(Command_tie_req);
};
-
-/** Baseclass for meter/partial req. It has to be handled by
+/** Baseclass for time_signature/partial req. It has to be handled by
Staff_{walker,column} baseclass. */
class Timing_req : public Command_req {
public:
- REQUESTMETHODS(Timing_req, timing);
- virtual Tempo_req * tempo(){return 0; }
+ REQUESTMETHODS(Timing_req);
};
int metronome_i_;
Tempo_req();
- REQUESTMETHODS(Tempo_req, tempo);
+ REQUESTMETHODS(Tempo_req);
bool do_equal_b (Request *) const;
};
Moment duration_;
Partial_measure_req (Moment);
- REQUESTMETHODS(Partial_measure_req, partial);
+ REQUESTMETHODS(Partial_measure_req);
bool do_equal_b (Request*) const;
};
/**
- todo: allow C meter
+ todo: allow C time_signature
*/
-class Meter_change_req : public Timing_req {
+class Time_signature_change_req : public Timing_req {
public:
int beats_i_, one_beat_i_;
- Meter_change_req();
- void set (int,int);
+ Time_signature_change_req();
bool do_equal_b (Request*) const;
- REQUESTMETHODS(Meter_change_req, meterchange);
+ REQUESTMETHODS(Time_signature_change_req);
};
/// toggle Cadenza mode
bool on_b_;
bool do_equal_b (Request*) const;
Cadenza_req (bool);
- REQUESTMETHODS(Cadenza_req,cadenza);
+ REQUESTMETHODS(Cadenza_req);
};
/// check if we're at start of a measure.
class Barcheck_req : public Timing_req {
public:
bool do_equal_b (Request *) const;
- REQUESTMETHODS(Barcheck_req,barcheck);
+ REQUESTMETHODS(Barcheck_req);
};
class Measure_grouping_req : public Timing_req {
Array<int> beat_i_arr_;
Array<Moment> elt_length_arr_;
bool do_equal_b (Request *) const;
- REQUESTMETHODS(Measure_grouping_req, measuregrouping);
+ REQUESTMETHODS(Measure_grouping_req);
};
/** draw a (repeat)-bar. This something different than #Barcheck_req#,
Bar_req (String);
bool do_equal_b (Request*) const;
- REQUESTMETHODS(Bar_req,bar);
+ REQUESTMETHODS(Bar_req);
};
*/
class Key_change_req : public Command_req {
public:
- Array<Melodic_req*> melodic_p_arr_;
- bool minor_b_;
+ Array<Musical_pitch> pitch_arr_;
+ int modality_i_;
+ bool ordinary_key_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);
+ REQUESTMETHODS(Key_change_req);
/// squash the octaves to 1
void squash_octaves();
/// return number of sharps in key
int sharps_i();
- void transpose (Melodic_req const * d) const;
- /// is minor key?
- int minor_b();
+ void transpose (Musical_pitch d);
+ bool minor_b() const;
};
class Clef_change_req : public Command_req {
public:
String clef_str_;
Clef_change_req (String);
- REQUESTMETHODS(Clef_change_req, clefchange);
+ REQUESTMETHODS(Clef_change_req);
};
+class Bracket_req : public Span_req, public Command_req {
+
+public:
+ REQUESTMETHODS(Bracket_req);
+};
+
+
#endif // COMMANDREQUEST_HH