]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/voice.hh
5ddcc91933c426d4a0645edea7eb17a96c11d8f0
[lilypond.git] / lily / include / voice.hh
1 #ifndef VOICE_HH
2 #define VOICE_HH
3
4 #include "proto.hh"
5 #include "plist.hh"
6 #include "moment.hh"
7
8 /** class for  horizontal stuff.
9
10     Voice is a ordered row of Voice_elements. It is strictly
11     horizontal: you cannot have two rhythmic elements running parallel
12     in a Voice. For proper processing, each Voice should have
13     Group_change_req as a first element.
14
15     */
16
17 struct Voice {
18     /** the elements, earliest first.
19       Please use the member #add()# to add a new element
20       */
21     IPointerList<Voice_element *> elts_;
22     Moment start_;
23
24     /* *************** */
25     Voice();
26     Voice(Voice const&);
27
28     Moment when(Voice_element const *)const;
29     Moment last() const;
30     void transpose(Melodic_req const &)const;
31     void add(Voice_element*);
32     bool find_plet_start_b(char c, Moment& moment_r);
33     void print() const;
34     void set_default_group(String id);
35     void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
36 };
37
38 #endif