]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/request.hh
release: 1.1.15
[lilypond.git] / lily / include / request.hh
index a349f5786b859bf4e36717d1ecddf0608607d156..4d0a5f2a0a8fd30daa367a684895a2343ba0a67e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef REQUEST_HH
 #include "music.hh"
 #include "direction.hh"
 
-/**
- a voice element wants something printed.
- Hungarian postfix: req
- @see lilygut manpage
+
+/** An atom of musical information.  This is an abstract class for any
+  piece of music that does not contain other Music.
+  
+  Hungarian postfix: req
+
  */
 class Request : public Music {
 
 public:
     
-    /* *************** */
-
-    virtual ~Request(){}
+  virtual ~Request(){}
 
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    VIRTUAL_COPY_CONS(Request,Music);
+  
+  VIRTUAL_COPY_CONS(Music);
     
-    virtual MInterval time_int() 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;
+  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;}\
-DECLARE_MY_RUNTIME_TYPEINFO;\
-VIRTUAL_COPY_CONS(T, Request);\
+
+#define REQUESTMETHODS(T)      \
+\
+VIRTUAL_COPY_CONS(Request);\
 virtual void do_print() const
 
 
@@ -63,19 +50,34 @@ 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:
-    Direction dir_;
-    General_script_def *scriptdef_p_;
+  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&);
+};
 
-    /* *************** */
-    bool do_equal_b (Request*) const;
 
-    Script_req();
-    REQUESTMETHODS(Script_req,script);
-    ~Script_req();
-    Script_req (Script_req const&);
+/**
+  Requests to start or stop something.
+ This type of request typically results in the creation of a #Spanner#
+*/
+class Span_req  : public virtual Request  {
+public:
+  /// should the spanner start or stop, or is it unwanted?
+  Direction spantype_;
+  bool do_equal_b (Request*) const;
+  REQUESTMETHODS(Span_req);
+
+  Span_req();
 };
 
-    
+
 #endif