]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/music-list.hh
release: 1.0.8
[lilypond.git] / lily / include / music-list.hh
1 /*
2   music-list.hh -- declare Music_sequence, Simultaneous_music and Sequential_music
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef Music_sequence_HH
11 #define Music_sequence_HH
12
13 #include "music.hh"
14 #include "plist.hh"
15
16
17 class Music_list : public Pointer_list<Music*>
18 {
19 public:
20   Musical_pitch do_relative_octave (Musical_pitch, bool); 
21   void add_music (Music*);
22   Music_list (Music_list const&);
23   Music_list ();
24 };
25
26
27 /**
28   Music can be a list of other "Music" elements
29  */
30 class Music_sequence : public Music
31 {
32     
33 public:
34   int multi_level_i_;
35   Music_list * music_p_list_p_;
36   
37   Music_sequence (Music_sequence const&);
38   Music_sequence (Music_list *l_p);
39   DECLARE_MY_RUNTIME_TYPEINFO;
40   VIRTUAL_COPY_CONS(Music_sequence,Music);
41
42   virtual void transpose (Musical_pitch );
43   void add_music (Music *music_p);
44 protected:
45   virtual void do_print() const;
46 };
47
48 /**
49   Simultaneous_music is a list of music-elements which happen simultaneously
50  */
51 class Simultaneous_music : public Music_sequence
52 {
53 public:
54   Simultaneous_music(Music_list *);
55   DECLARE_MY_RUNTIME_TYPEINFO;
56   VIRTUAL_COPY_CONS(Simultaneous_music,Music);
57   
58   virtual Musical_pitch to_relative_octave (Musical_pitch);
59   virtual void translate (Moment dt);
60   virtual MInterval time_int() const;
61 };
62
63 /**
64   The request is a collection of Requests. A note that you enter in mudela is 
65   one Request_chord, one syllable of lyrics is one Request_chord
66  */
67 class Request_chord : public Simultaneous_music
68 {
69 public:
70   DECLARE_MY_RUNTIME_TYPEINFO;
71   virtual Musical_pitch to_relative_octave (Musical_pitch);
72   Request_chord();
73   VIRTUAL_COPY_CONS(Request_chord, Music);
74 };
75 /**
76   Sequential_music is a list of music-elements which are placed behind each other.
77  */
78 class Sequential_music : public Music_sequence
79 {
80     
81 public:
82   Moment offset_mom_;
83   virtual Musical_pitch to_relative_octave (Musical_pitch);
84   Sequential_music(Music_list*);
85   DECLARE_MY_RUNTIME_TYPEINFO;
86   VIRTUAL_COPY_CONS(Sequential_music, Music);
87   virtual void translate (Moment dt);
88   virtual MInterval time_int() const;
89 };
90 #endif // Music_sequence_HH