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 //______________________________________________________________________________
7 class 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 
29  msrSegment (
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 };
363 typedef SMARTP<msrSegment> S_msrSegment;
364 EXP ostream& operator<< (ostream& os, const S_msrSegment& elt);
365 
Definition: msrSegments_MUT_DEP.h:8
Rational number representation.
Definition: rational.h:25