X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fcommand-request.hh;h=f8755a92dbc16cd7a9e9393fc383e0c01b94c5f1;hb=b0064942493df77833e6e41e05d362850f4874b0;hp=f32dbea2fdb35f1146f191c2cffa666cd0e40d91;hpb=dbed556ca13bc2371e83774890eaa06bc8b04def;p=lilypond.git diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index f32dbea2fd..f8755a92db 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -1,9 +1,9 @@ /* - command-request.hh -- declare Non musical requests + 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 + (c) 1997--2000 Han-Wen Nienhuys */ @@ -11,107 +11,119 @@ #define COMMANDREQUEST_HH #include "request.hh" -#include "varray.hh" - -/** Request which are assumed to be "happening" before the - musical requests. */ -struct Command_req : virtual Request { - 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 Timing_req*timing() { return 0; } +#include "array.hh" +#include "duration.hh" +#include "musical-pitch.hh" +#include "key-def.hh" +#include "protected-scm.hh" + +class Break_req : public Request { +public: + Real penalty_f_; + Break_req (); +protected: + VIRTUAL_COPY_CONS(Music); +}; + +class Mark_req : public Request { +public: + Protected_scm mark_label_; +protected: + virtual bool do_equal_b (Request const*) const; + VIRTUAL_COPY_CONS(Music); }; -/** 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. */ -struct Timing_req : Command_req { - REQUESTMETHODS(Timing_req, timing); +class Timing_req : public Request { +public: + VIRTUAL_COPY_CONS(Music); }; -struct Partial_measure_req : Timing_req { - Moment duration_; +class Tempo_req : public Timing_req +{ +public: + Duration dur_; + int metronome_i_; - Partial_measure_req(Moment); - REQUESTMETHODS(Partial_measure_req, partial); + Tempo_req(); +protected: + virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); + bool do_equal_b (Request const *) const; }; + /** - todo: allow C meter + todo: allow C time_signature */ -struct Meter_change_req : Timing_req { - int beats_i_, one_beat_i_; - - Meter_change_req(); - void set(int,int); - REQUESTMETHODS(Meter_change_req, meterchange); +class Time_signature_change_req : public Timing_req { +public: + int beats_i_; + int one_beat_i_; + + Time_signature_change_req(); +protected: + virtual void do_print () const; + bool do_equal_b (Request const *) const; + VIRTUAL_COPY_CONS(Music); }; -/// toggle Cadenza mode -struct Cadenza_req : Timing_req { - /// turn on? - bool on_b_; - Cadenza_req(bool); - REQUESTMETHODS(Cadenza_req,cadenza); -}; /// check if we're at start of a measure. -struct Barcheck_req : Timing_req { - - REQUESTMETHODS(Barcheck_req,barcheck); +class Barcheck_req : public Timing_req { +public: + bool do_equal_b (Request const *) const; + VIRTUAL_COPY_CONS(Music); }; -struct Measure_grouping_req: Timing_req { - Array beat_i_arr_; - Array 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 { - 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); +class Bar_req : public Request { +public: + String type_str_; + Bar_req (String); +protected: + virtual bool do_equal_b (Request const*) const; + virtual void do_print () const; + + VIRTUAL_COPY_CONS(Music); }; -struct Group_feature_req : Command_req { - int stemdir_i_; - Group_feature_req(); - REQUESTMETHODS(Group_feature_req, groupfeature); +class Breathing_sign_req : public Request { + VIRTUAL_COPY_CONS(Music); }; - -struct Key_change_req : Command_req { - Array melodic_p_arr_; - virtual void transpose(Melodic_req const &)const; - Key_change_req(); - Key_change_req(Key_change_req const&); - ~Key_change_req(); - REQUESTMETHODS(Key_change_req, keychange); +/** + Handle key changes. + Routines for sharps and flats are separated, + so that caller may identify non-conventional keys. +*/ +class Key_change_req : public Request +{ +public: + Key_change_req (); + ~Key_change_req(); + Key_change_req(Key_change_req const &); + Key_def *key_; + +protected: + VIRTUAL_COPY_CONS(Music); + void transpose (Musical_pitch d); + virtual void do_print () const; }; -struct Clef_change_req : Command_req { - String clef_str_; - Clef_change_req(String); - REQUESTMETHODS(Clef_change_req, clefchange); +class Clef_change_req : public Request { +public: + String clef_str_; + Clef_change_req (String); +protected: + virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); }; + #endif // COMMANDREQUEST_HH