LibMusicXML  3.18
msrTuplets_MUT_DEP.h
1 /*
2  This file is to be included only by msrMutualDependencies.h,
3  to satisfy declarations mutual dependencies.
4 */
5 
6 //______________________________________________________________________________
7 class msrTuplet : public msrTupletElement
8 {
9  public:
10 
11  // data types
12  // ------------------------------------------------------
13 
14  enum msrTupletTypeKind {
15  kTupletTypeNone,
16  kTupletTypeStart, kTupletTypeContinue, kTupletTypeStop,
17  kTupletTypeStartAndStopInARow };
18 
19  static string tupletTypeKindAsString (
20  msrTupletTypeKind tupletTypeKind);
21 
22  enum msrTupletBracketKind {
23  kTupletBracketYes, kTupletBracketNo};
24 
25  static string tupletBracketKindAsString (
26  msrTupletBracketKind tupletBracketKind);
27 
28  enum msrTupletLineShapeKind {
29  kTupletLineShapeStraight, kTupletLineShapeCurved};
30 
31  static string tupletLineShapeKindAsString (
32  msrTupletLineShapeKind tupletLineShapeKind);
33 
34  enum msrTupletShowNumberKind {
35  kTupletShowNumberActual, kTupletShowNumberBoth, kTupletShowNumberNone };
36 
37  static string tupletShowNumberKindAsString (
38  msrTupletShowNumberKind tupletShowNumberKind);
39 
40  enum msrTupletShowTypeKind {
41  kTupletShowTypeActual, kTupletShowTypeBoth, kTupletShowTypeNone };
42 
43  static string tupletShowTypeKindAsString (
44  msrTupletShowTypeKind tupletShowTypeKind);
45 
46  // creation from MusicXML
47  // ------------------------------------------------------
48 
49  static SMARTP<msrTuplet> create (
50  int inputLineNumber,
51  string tupletMeasureNumber,
52  int tupletNumber,
53  msrTupletBracketKind tupletBracketKind,
54  msrTupletLineShapeKind tupletLineShapeKind,
55  msrTupletShowNumberKind tupletShowNumberKind,
56  msrTupletShowTypeKind tupletShowTypeKind,
57  msrTupletFactor tupletFactor,
58  rational memberNotesSoundingWholeNotes,
59  rational memberNotesDisplayWholeNotes);
60 
61  SMARTP<msrTuplet> createTupletNewbornClone ();
62 
63  SMARTP<msrTuplet> createTupletDeepCopy ();
64 
65  protected:
66 
67  // constructors/destructor
68  // ------------------------------------------------------
69 
70  msrTuplet (
71  int inputLineNumber,
72  string tupletMeasureNumber,
73  int tupletNumber,
74  msrTupletBracketKind tupletBracketKind,
75  msrTupletLineShapeKind tupletLineShapeKind,
76  msrTupletShowNumberKind tupletShowNumberKind,
77  msrTupletShowTypeKind tupletShowTypeKind,
78  msrTupletFactor tupletFactor,
79  rational memberNotesSoundingWholeNotes,
80  rational memberNotesDisplayWholeNotes);
81 
82  virtual ~msrTuplet ();
83 
84  public:
85 
86  // set and get
87  // ------------------------------------------------------
88 
89  // tuplet uplink
90  void setTupletTupletUpLink (
91  const S_msrTuplet& tuplet)
92  { fTupletTupletUpLink = tuplet; }
93 
94  S_msrTuplet getTupletTupletUpLink () const
95  { return fTupletTupletUpLink; }
96 
97  // measure upLink
98  void setTupletMeasureUpLink (
99  const S_msrMeasure& measure)
100  { fTupletMeasureUpLink = measure; }
101 
102  S_msrMeasure getTupletMeasureUpLink () const
103  { return fTupletMeasureUpLink; }
104 
105  // positions in measures
106  rational setTupletMembersPositionInMeasure (
107  S_msrMeasure measure,
108  rational positionInMeasure);
109  // returns the position after the tuplet JMI ???
110 
111  int getTupletNumber () const
112  { return fTupletNumber; }
113 
114  msrTupletBracketKind getTupletBracketKind () const
115  { return fTupletBracketKind; }
116 
117  msrTupletLineShapeKind
118  getTupletLineShapeKind () const
119  { return fTupletLineShapeKind; }
120 
121  msrTupletShowNumberKind
122  getTupletShowNumberKind () const
123  { return fTupletShowNumberKind; }
124 
125  msrTupletShowTypeKind getTupletShowTypeKind () const
126  { return fTupletShowTypeKind; }
127 
128  const msrTupletFactor&
129  getTupletFactor ()
130  { return fTupletFactor; }
131 
132  rational getMemberNotesSoundingWholeNotes () const
133  { return fMemberNotesSoundingWholeNotes; }
134  rational getMemberNotesDisplayWholeNotes () const
135  { return fMemberNotesDisplayWholeNotes; }
136 
137 /* JMI
138  const list<S_msrTupletElement>&
139  getTupletElementsList () const
140  { return fTupletElementsList; }
141  */
142 
143  rational getTupletSoundingWholeNotes () const
144  // JMI { return fTupletSoundingWholeNotes; }
145  { return fMeasureElementSoundingWholeNotes; }
146 
147  rational getTupletDisplayWholeNotes () const
148  { return fTupletDisplayWholeNotes; }
149 
150  // services
151  // ------------------------------------------------------
152 
153  void addNoteToTuplet (
154  S_msrNote note,
155  S_msrVoice voice);
156 
157  void addChordToTuplet (S_msrChord chord);
158 
159  void addTupletToTuplet (S_msrTuplet tuplet);
160 
161  void addTupletToTupletClone (S_msrTuplet tuplet);
162 
163  S_msrNote fetchTupletFirstNonGraceNote () const;
164 
165  S_msrNote removeFirstNoteFromTuplet ( // JMI
166  int inputLineNumber);
167  S_msrNote removeLastNoteFromTuplet (
168  int inputLineNumber);
169 
170  // JMI void applyDisplayFactorToTupletMembers ();
171 
172  void unapplySoundingFactorToTupletMembers (
173  const msrTupletFactor& containingTupletFactor);
174 
175 /* JMI
176  // finalization
177  void finalizeTuplet (
178  int inputLineNumber);
179 */
180 
181  public:
182 
183  // visitors
184  // ------------------------------------------------------
185 
186  virtual void acceptIn (basevisitor* v);
187  virtual void acceptOut (basevisitor* v);
188 
189  virtual void browseData (basevisitor* v);
190 
191  public:
192 
193  // print
194  // ------------------------------------------------------
195 
196  string asString () const;
197 
198  virtual void print (ostream& os) const;
199 
200  virtual void printShort (indentedOstream& os);
201 
202  private:
203 
204  // fields
205  // ------------------------------------------------------
206 
207  // upLink
208  S_msrMeasure fTupletMeasureUpLink;
209  S_msrTuplet fTupletTupletUpLink;
210 
211  int fTupletNumber;
212 
213  // appearance
214  msrTupletBracketKind fTupletBracketKind;
215 
216  msrTupletLineShapeKind
217  fTupletLineShapeKind;
218 
219  msrTupletShowNumberKind
220  fTupletShowNumberKind;
221 
222  msrTupletShowTypeKind fTupletShowTypeKind;
223 
224  // factor
225  msrTupletFactor fTupletFactor;
226 
227  // member notes
228  rational fMemberNotesSoundingWholeNotes;
229  rational fMemberNotesDisplayWholeNotes;
230 
231 // JMI rational fTupletSoundingWholeNotes;
232  // display whole notes
233  rational fTupletDisplayWholeNotes;
234 
235  list<S_msrTupletElement>
236  fTupletElementsList;
237 };
238 typedef SMARTP<msrTuplet> S_msrTuplet;
239 EXP ostream& operator<< (ostream& os, const S_msrTuplet& elt);
240 
msrTuplet
Definition: msrTuplets_MUT_DEP.h:8
rational
Rational number representation.
Definition: rational.h:25