]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/request.hh
release: 1.5.29
[lilypond.git] / lily / include / request.hh
1 /*
2   request.hh -- declare Request baseclasses.
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #ifndef REQUEST_HH
10 #define REQUEST_HH
11
12
13 #include "string.hh"
14 #include "moment.hh"
15 #include "virtual-methods.hh"
16 #include "input.hh"
17 #include "music.hh"
18 #include "direction.hh"
19
20
21 /** An atom of musical information.  This is an abstract class for any
22   piece of music that does not contain other Music.
23   
24   Hungarian postfix: req
25
26  */
27 class Request : public Music {
28 public:
29   Request ();
30   VIRTUAL_COPY_CONS (Music);
31   bool equal_b (Request const*) const;
32 protected:
33   virtual bool do_equal_b (Request const*) const;
34
35 };
36
37
38
39 class Script_req : public virtual Request
40 {
41 public:
42   void set_direction (Direction d);
43   Direction get_direction () const;
44   VIRTUAL_COPY_CONS (Music);
45   Script_req ();
46 };
47
48
49 /**
50   Requests to start or stop something.
51  This type of request typically results in the creation of a #Spanner#
52 */
53 class Span_req  : public virtual Request  {
54 public:
55   String get_span_type_str () const;
56   void set_span_type_str (String);
57   void set_span_dir (Direction d);
58   Direction get_span_dir () const;  
59   
60   Span_req ();
61 protected:
62   
63   virtual bool do_equal_b (Request const*) const;
64
65   VIRTUAL_COPY_CONS (Music);
66 };
67
68 /**
69   Start a tie at this note, end it at the next
70  */
71 class Tie_req : public Request {
72 public:
73   VIRTUAL_COPY_CONS (Music);
74 };
75
76 #endif