2 request.hh -- declare Request baseclasses.
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
15 #include "virtual-methods.hh"
18 #include "direction.hh"
20 #define DEFAULTACCESSOR(T) virtual T *access_ ## T () { return 0; }
24 An atom of musical information .
25 Hungarian postfix: req
28 class Request : public Music {
36 DECLARE_MY_RUNTIME_TYPEINFO;
37 VIRTUAL_COPY_CONS(Request,Music);
39 virtual MInterval time_int() const;
40 virtual Moment duration() const { return 0; }
42 /* accessors for children
46 DEFAULTACCESSOR(Barcheck_req)
47 DEFAULTACCESSOR(Script_req)
48 DEFAULTACCESSOR(Span_req)
49 DEFAULTACCESSOR(Spacing_req)
50 DEFAULTACCESSOR(Musical_req)
51 DEFAULTACCESSOR(Command_req)
53 bool equal_b (Request*) const;
55 virtual bool do_equal_b (Request*) const;
56 virtual void do_print() const;
60 #define REQUESTMETHODS(T) \
61 virtual T * access_ ## T() { return this;}\
62 DECLARE_MY_RUNTIME_TYPEINFO;\
63 VIRTUAL_COPY_CONS(T, Request);\
64 virtual void do_print() const
68 /** Put a script above or below this ``note'' or bar. eg upbow, downbow. Why
69 a request? These symbols may conflict with slurs and brackets, so
70 this also a request */
72 class Script_req : public virtual Request {
75 General_script_def *scriptdef_p_;
77 bool do_equal_b (Request*) const;
80 REQUESTMETHODS(Script_req);
82 Script_req (Script_req const&);