2 request.hh -- declare Request baseclasses.
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
15 #include "virtual-methods.hh"
18 #include "direction.hh"
21 a voice element wants something printed.
22 Hungarian postfix: req
25 class Request : public Music {
33 DECLARE_MY_RUNTIME_TYPEINFO;
34 VIRTUAL_COPY_CONS(Request,Music);
36 virtual MInterval time_int() const;
37 virtual void transpose (Melodic_req const &){}
38 virtual Moment duration() const { return 0; }
40 /* accessors for children
43 virtual Barcheck_req *barcheck() { return 0; }
44 virtual Script_req *script() { return 0;}
45 virtual Span_req *span() { return 0; }
46 virtual Spacing_req * spacing() { return 0; }
47 virtual Blank_req * blank() { return 0; }
48 virtual Musical_req *musical() { return 0; }
49 virtual Command_req * command() { return 0; }
50 bool equal_b (Request*) const;
52 virtual bool do_equal_b (Request*) const;
53 virtual void do_print() const;
56 #define REQUESTMETHODS(T,accessor) \
57 virtual T * accessor() { return this;}\
58 DECLARE_MY_RUNTIME_TYPEINFO;\
59 VIRTUAL_COPY_CONS(T, Request);\
60 virtual void do_print() const
64 /** Put a script above or below this ``note'' or bar. eg upbow, downbow. Why
65 a request? These symbols may conflict with slurs and brackets, so
66 this also a request */
67 class Script_req : public virtual Request {
70 General_script_def *scriptdef_p_;
73 bool do_equal_b (Request*) const;
76 REQUESTMETHODS(Script_req,script);
78 Script_req (Script_req const&);