2 grouping.hh -- part of GNU LilyPond
4 (c) 1996,97 Han-Wen Nienhuys
10 #include "minterval.hh"
13 /** data structure which represents rhythmic units this is a tree. It groupes notes according to rules
15 TODO Documentation. Unhairing
17 struct Rhythmic_grouping {
18 Array<Rhythmic_grouping*> children;
23 Array<MInterval> intervals();
24 MInterval interval() const;
25 Moment length() const;
26 void intersect (MInterval);
28 void operator=(Rhythmic_grouping const&);
29 Rhythmic_grouping (Rhythmic_grouping const&);
30 Rhythmic_grouping (MInterval, int n=1);
32 Rhythmic_grouping (Array<Rhythmic_grouping*>);
35 void add_child (Moment start, Moment len);
36 bool child_fit_b (Moment start);
37 void split (Rhythmic_grouping r);
38 void split (Array<MInterval>);
44 Array<int> generate_beams (Array<int>, int&);
46 /** multiply self to span #i#.
47 In implementation, this isn't really const, but conceptually it is.
49 void extend (MInterval i) const;
50 void translate (Moment);
54 void copy (Rhythmic_grouping const&);
58 Rhythmic_grouping parse_grouping (Array<int> beat_i_arr, Array<Moment> elt_length_arr);