]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/request.hh
release: 1.0.8
[lilypond.git] / lily / include / request.hh
index 07e480137eb3929efe2671dff3e12305eab48be3..eab7b2d8b07de1fb3328bb37a477f3cc5ad0b7ec 100644 (file)
@@ -3,7 +3,7 @@
 
   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>
 */
 
 #ifndef REQUEST_HH
 #include "virtual-methods.hh"
 #include "input.hh"
 #include "music.hh"
+#include "direction.hh"
+
+#define DEFAULTACCESSOR(T)  virtual T *access_ ## T () { return 0; }
+
 
 /**
a voice element wants something printed.
  An atom of musical information .
  Hungarian postfix: req
  @see lilygut manpage
  */
@@ -25,35 +29,36 @@ class Request : public Music {
 
 public:
     
-    /* *************** */
+  /* *************** */
 
-    virtual ~Request(){}
+  virtual ~Request(){}
 
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    VIRTUAL_COPY_CONS(Request,Music);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Request,Music);
     
-    virtual MInterval time_int() const;
-    virtual void transpose(Melodic_req const &){}
-    virtual Moment duration() const { return 0; }
-
-    /*  accessors for children
-       maybe checkout RTTI
-     */
-    virtual Barcheck_req *barcheck() { return 0; }
-    virtual Script_req *script() { return 0;}
-    virtual Span_req *span() { return 0; }
-    virtual Spacing_req * spacing() { return 0; }
-    virtual Blank_req * blank() { return 0; }
-    virtual Musical_req *musical() { return 0; }
-    virtual Command_req * command() { return 0; }
-    bool equal_b(Request*) const;
+  virtual MInterval time_int() const;
+  virtual Moment duration() const { return 0; }
+
+  /*  accessors for children
+      maybe checkout RTTI
+  */
+
+  DEFAULTACCESSOR(Barcheck_req)
+  DEFAULTACCESSOR(Script_req)
+  DEFAULTACCESSOR(Span_req)
+  DEFAULTACCESSOR(Spacing_req)
+  DEFAULTACCESSOR(Musical_req)
+  DEFAULTACCESSOR(Command_req)
+    
+  bool equal_b (Request*) const;
 protected:
-    virtual bool do_equal_b(Request*) const;
-    virtual void do_print()const;
+  virtual bool do_equal_b (Request*) const;
+  virtual void do_print() const;
 };
 
-#define REQUESTMETHODS(T,accessor)     \
-virtual T * accessor() { return this;}\
+
+#define REQUESTMETHODS(T)      \
+virtual T * access_ ## T() { return this;}\
 DECLARE_MY_RUNTIME_TYPEINFO;\
 VIRTUAL_COPY_CONS(T, Request);\
 virtual void do_print() const
@@ -63,18 +68,18 @@ virtual void do_print() const
 /** Put a script above or below this ``note'' or bar. eg upbow, downbow. Why
   a request? These symbols may conflict with slurs and brackets, so
   this also a request */
+
 class Script_req  : public virtual Request { 
 public:
-    int dir_i_;
-    General_script_def *scriptdef_p_;
-
-    /* *************** */
-    bool do_equal_b(Request*)const;
-
-    Script_req();
-    REQUESTMETHODS(Script_req,script);
-    ~Script_req();
-    Script_req(Script_req const&);
+  Direction dir_;
+  General_script_def *scriptdef_p_;
+  
+  bool do_equal_b (Request*) const;
+
+  Script_req();
+  REQUESTMETHODS(Script_req);
+  ~Script_req();
+  Script_req (Script_req const&);
 };