LibMusicXML 3.18
msrSegments_MUT_DEP.h
1/*
2 This file is to be included only by msrMutualDependencies.h,
3 to satisfy declarations mutual dependencies.
4*/
5
6//______________________________________________________________________________
7class msrSegment : public msrVoiceElement
8{
9 public:
10
11 // creation from MusicXML
12 // ------------------------------------------------------
13
14 static SMARTP<msrSegment> create (
15 int inputLineNumber,
16 S_msrVoice segmentVoicekUpLink);
17
18 SMARTP<msrSegment> createSegmentNewbornClone (
19 S_msrVoice containingVoice);
20
21 SMARTP<msrSegment> createSegmentDeepCopy (
22 S_msrVoice containingVoice);
23
24 protected:
25
26 // constructors/destructor
27 // ------------------------------------------------------
28
30 int inputLineNumber,
31 S_msrVoice segmentVoicekUpLink);
32
33 virtual ~msrSegment ();
34
35 private:
36
37 // initialization
38 // ------------------------------------------------------
39
40 void initializeSegment ();
41
42 public:
43
44 // set and get
45 // ------------------------------------------------------
46
47 // upLinks
48
49 S_msrVoice getSegmentVoiceUpLink () const
50 { return fSegmentVoiceUpLink; }
51
52 // number
53
54 int getSegmentAbsoluteNumber () const
55 { return fSegmentAbsoluteNumber; }
56
57 // measures
58
59 const list<S_msrMeasure>&
60 getSegmentMeasuresList () const
61 { return fSegmentMeasuresList; }
62
63 list<S_msrMeasure>& getSegmentMeasuresListToModify () // JMI
64 { return fSegmentMeasuresList; }
65
66 public:
67
68 // public services
69 // ------------------------------------------------------
70
71 // upLinks
72
73 S_msrPart fetchSegmentPartUpLink () const;
74
75 // backup and padding
76
77 void padUpToPositionInMeasureInSegment (
78 int inputLineNumber,
79 rational wholeNotes);
80
81 void backupByWholeNotesStepLengthInSegment (
82 int inputLineNumber,
83 rational backupTargetMeasureElementPositionInMeasure);
84
85 void appendPaddingNoteToSegment (
86 int inputLineNumber,
87 rational forwardStepLength);
88
89 // measures
90
91 S_msrMeasure fetchLastMeasureFromSegment (
92 int inputLineNumber,
93 string context);
94
95 S_msrMeasure createMeasureAndAppendItToSegment (
96 int inputLineNumber,
97 string measureNumber,
98 msrMeasure::msrMeasureImplicitKind
99 measureImplicitKind);
100
101 void setNextMeasureNumberInSegment (
102 int inputLineNumber,
103 string nextMeasureNumber);
104
105 void appendMeasureToSegment (
106 S_msrMeasure measure);
107
108 void prependMeasureToSegment (
109 S_msrMeasure measure);
110
111 // clef, key, time
112
113 void appendClefToSegment (S_msrClef clef);
114 void prependClefToSegment (S_msrClef clef);
115
116 void appendKeyToSegment (S_msrKey key);
117
118 void appendTimeToSegment (S_msrTime time);
119 void appendTimeToSegmentClone (S_msrTime time);
120
121 // transpose
122
123 void appendTransposeToSegment (
124 S_msrTranspose transpose);
125
126 // part name display
127
128 void appendPartNameDisplayToSegment (
129 S_msrPartNameDisplay partNameDisplay);
130
131 // part abbreviation display
132
133 void appendPartAbbreviationDisplayToSegment (
134 S_msrPartAbbreviationDisplay partAbbreviationDisplay);
135
136 // staff details
137
138 void appendStaffDetailsToSegment (
139 S_msrStaffDetails staffDetails);
140
141 // tempo
142
143 void appendTempoToSegment (S_msrTempo tempo);
144
145 // rehearsals
146
147 void appendRehearsalToSegment (
148 S_msrRehearsal rehearsal);
149
150 // octave shifts
151
152 void appendOctaveShiftToSegment (
153 S_msrOctaveShift octaveShift);
154
155 // scordaturas
156
157 void appendScordaturaToSegment (
158 S_msrScordatura scordatura);
159
160 // accordion registration
161
162 void appendAccordionRegistrationToSegment (
163 S_msrAccordionRegistration
164 accordionRegistration);
165
166 // harp pedals tuning
167
168 void appendHarpPedalsTuningToSegment (
169 S_msrHarpPedalsTuning
170 harpPedalsTuning);
171
172 // harmonies
173
174 void appendHarmonyToSegment (
175 S_msrHarmony harmony);
176
177 void appendHarmonyToSegmentClone (
178 S_msrHarmony harmony);
179
180 // frames
181
182 void appendFrameToSegment (
183 S_msrFrame frame);
184
185 void appendFrameToSegmentClone (
186 S_msrFrame frame);
187
188 // figured bass
189
190 void appendFiguredBassToSegment (
191 S_msrFiguredBass figuredBass);
192
193 void appendFiguredBassToSegmentClone (
194 S_msrFiguredBass figuredBass);
195
196 // staff change
197
198 void appendVoiceStaffChangeToSegment (
199 S_msrVoiceStaffChange voiceStaffChange);
200
201 // notes
202
203 void appendNoteToSegment (
204 S_msrNote note,
205 rational partCurrentPositionInMeasure);
206
207 void appendNoteToSegmentClone (S_msrNote note);
208
209 // tremolos
210
211 void appendDoubleTremoloToSegment (
212 S_msrDoubleTremolo doubleTremolo);
213
214 // chords
215
216 void appendChordToSegment (S_msrChord chord);
217
218 // tuplets
219
220 void appendTupletToSegment (S_msrTuplet tuplet);
221
222 // bar lines
223
224 void appendBarlineToSegment (
225 S_msrBarline barline);
226
227 void prependBarlineToSegment (
228 S_msrBarline barline);
229
230 // bar checks
231
232 void appendBarCheckToSegment (
233 S_msrBarCheck barCheck);
234
235 // bar number checks
236
237 void appendBarNumberCheckToSegment (
238 S_msrBarNumberCheck barNumberCheck);
239
240 // breaks
241
242 void appendLineBreakToSegment (S_msrLineBreak lineBreak);
243 void appendPageBreakToSegment (S_msrPageBreak pageBreak);
244
245 // segno
246
247 void appendSegnoToSegment (S_msrSegno segno);
248
249 // coda
250
251 void appendCodaToSegment (S_msrCoda coda);
252
253 // eyeglasses
254
255 void appendEyeGlassesToSegment (
256 S_msrEyeGlasses eyeGlasses);
257
258 // pedal
259
260 void appendPedalToSegment (S_msrPedal pedal);
261
262 // damp
263
264 void appendDampToSegment (S_msrDamp damp);
265
266 // damp all
267
268 void appendDampAllToSegment (S_msrDampAll dampAll);
269
270 // grace notes
271
272 /* JMI
273 void addGraceNotesGroupAheadOfSegmentIfNeeded (
274 S_msrGraceNotesGroup graceNotesGroup);
275
276 void appendGraceNotesToSegment (
277 S_msrGraceNotes graceNotes);
278
279 void appendAfterGraceNotesToSegment (
280 S_msrAfterGraceNotes afterGraceNotes);
281
282 void prependAfterGraceNotesToSegment (
283 S_msrAfterGraceNotes afterGraceNotes);
284 */
285
286 // other elements
287
288 void prependOtherElementToSegment (
289 S_msrMeasureElement elem);
290 void appendOtherElementToSegment (
291 S_msrMeasureElement elem);
292
293 // removing elements
294
295 void removeNoteFromSegment (
296 int inputLineNumber,
297 S_msrNote note);
298
299 void removeElementFromSegment (
300 int inputLineNumber,
301 S_msrElement element);
302
303 S_msrMeasure removeLastMeasureFromSegment (
304 int inputLineNumber,
305 string context);
306
307 public:
308
309 // visitors
310 // ------------------------------------------------------
311
312 virtual void acceptIn (basevisitor* v);
313 virtual void acceptOut (basevisitor* v);
314
315 virtual void browseData (basevisitor* v);
316
317 public:
318
319 // print
320 // ------------------------------------------------------
321
322 string asShortString () const;
323 string asString () const;
324
325 void displaySegment (
326 int inputLineNumber,
327 string context);
328
329 virtual void print (ostream& os) const;
330
331 virtual void shortPrint (ostream& os) const;
332
333 private:
334
335 // private services
336 // ------------------------------------------------------
337
338 // necessary due to the complexity of repeats management
339 void assertSegmentMeasuresListIsNotEmpty (
340 int inputLineNumber) const;
341
342 private:
343
344 // fields
345 // ------------------------------------------------------
346
347 // upLinks
348 S_msrVoice fSegmentVoiceUpLink;
349
350 // counter
351 static int gSegmentsCounter;
352
353 // absolute number, shared by newborn clones and deep copies
354 int fSegmentAbsoluteNumber;
355
356 // the measures in the segment contain the mmusic
357 list<S_msrMeasure> fSegmentMeasuresList;
358
359 // debug number, unique for every msrSegment instance
360 static int gSegmentDebugNumber;
361 int fSegmentDebugNumber;
362};
363typedef SMARTP<msrSegment> S_msrSegment;
364EXP ostream& operator<< (ostream& os, const S_msrSegment& elt);
365
Definition: msrSegments_MUT_DEP.h:8
Rational number representation.
Definition: rational.h:25