LibMusicXML  3.18
msrBeatsRepeats_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 msrBeatsRepeatPattern : public msrElement
8 {
9  public:
10 
11  // creation from MusicXML
12  // ------------------------------------------------------
13 
14  static SMARTP<msrBeatsRepeatPattern> create (
15  int inputLineNumber,
16  S_msrBeatsRepeat beatsRepeatUpLink);
17 
18  /* JMI
19  SMARTP<msrBeatsRepeatPattern> createBeatsRepeatPatternNewbornClone (
20  S_msrVoice containingVoice);
21 
22  SMARTP<msrBeatsRepeatPattern> createBeatsRepeatPatternDeepCopy (
23  S_msrVoice containingVoice);
24 */
25 
26  protected:
27 
28  // constructors/destructor
29  // ------------------------------------------------------
30 
32  int inputLineNumber,
33  S_msrBeatsRepeat beatsRepeatUpLink);
34 
35  virtual ~msrBeatsRepeatPattern ();
36 
37  public:
38 
39  // set and get
40  // ------------------------------------------------------
41 
42  // segment
43  void setBeatsRepeatPatternSegment (
44  S_msrSegment beatsRepeatPatternSegment);
45 
46  S_msrSegment getBeatsRepeatPatternSegment () const
47  { return fBeatsRepeatPatternSegment; }
48 
49  // upLinks
50  S_msrBeatsRepeat getBeatsRepeatUpLink () const
51  { return fBeatsRepeatUpLink; }
52 
53  // services
54  // ------------------------------------------------------
55 
56  int fetchMeasuresNumber () const;
57 
58  void collectRepeatPatternMeasuresIntoFlatList (
59  int inputLineNumber);
60 
61  public:
62 
63  // visitors
64  // ------------------------------------------------------
65 
66  virtual void acceptIn (basevisitor* v);
67  virtual void acceptOut (basevisitor* v);
68 
69  virtual void browseData (basevisitor* v);
70 
71  public:
72 
73  // print
74  // ------------------------------------------------------
75 
76  string asString () const;
77 
78  virtual void print (ostream& os) const;
79 
80  private:
81 
82  // fields
83  // ------------------------------------------------------
84 
85  // upLinks
86  S_msrBeatsRepeat fBeatsRepeatUpLink;
87 
88  // segment
89  S_msrSegment fBeatsRepeatPatternSegment;
90 };
91 typedef SMARTP<msrBeatsRepeatPattern> S_msrBeatsRepeatPattern;
92 EXP ostream& operator<< (ostream& os, const S_msrBeatsRepeatPattern& elt);
93 
94 //______________________________________________________________________________
95 class msrBeatsRepeatReplicas : public msrElement
96 {
97  public:
98 
99  // creation from MusicXML
100  // ------------------------------------------------------
101 
102  static SMARTP<msrBeatsRepeatReplicas> create (
103  int inputLineNumber,
104  S_msrBeatsRepeat beatsRepeatUpLink);
105 
106  /* JMI
107  SMARTP<msrBeatsRepeatReplicas> createBeatsRepeatReplicasNewbornClone (
108  S_msrVoice containingVoice);
109 
110  SMARTP<msrBeatsRepeatReplicas> createBeatsRepeatReplicasDeepCopy (
111  S_msrVoice containingVoice);
112  */
113 
114  protected:
115 
116  // constructors/destructor
117  // ------------------------------------------------------
118 
120  int inputLineNumber,
121  S_msrBeatsRepeat beatsRepeatUpLink);
122 
123  virtual ~msrBeatsRepeatReplicas ();
124 
125  public:
126 
127  // set and get
128  // ------------------------------------------------------
129 
130  // upLinks
131  S_msrBeatsRepeat getBeatsRepeatUpLink () const
132  { return fBeatsRepeatUpLink; }
133  // segment
134  void setBeatsRepeatReplicasSegment (
135  S_msrSegment beatsRepeatReplicasSegment);
136 
137  S_msrSegment getBeatsRepeatReplicasSegment () const
138  { return fBeatsRepeatReplicasSegment; }
139 
140  // services
141  // ------------------------------------------------------
142 
143  int fetchMeasuresNumber () const;
144 
145  int fetchBeatsRepeatReplicasNumber () const;
146 
147  void collectRepeatReplicasMeasuresIntoFlatList (
148  int inputLineNumber);
149 
150  public:
151 
152  // visitors
153  // ------------------------------------------------------
154 
155  virtual void acceptIn (basevisitor* v);
156  virtual void acceptOut (basevisitor* v);
157 
158  virtual void browseData (basevisitor* v);
159 
160  public:
161 
162  // print
163  // ------------------------------------------------------
164 
165  string asString () const;
166 
167  virtual void print (ostream& os) const;
168 
169  private:
170 
171  // fields
172  // ------------------------------------------------------
173 
174  // upLinks
175  S_msrBeatsRepeat fBeatsRepeatUpLink;
176 
177  // segment
178  S_msrSegment fBeatsRepeatReplicasSegment;
179 };
180 typedef SMARTP<msrBeatsRepeatReplicas> S_msrBeatsRepeatReplicas;
181 EXP ostream& operator<< (ostream& os, const S_msrBeatsRepeatReplicas& elt);
182 
183 //______________________________________________________________________________
184 class msrBeatsRepeat : public msrVoiceElement
185 {
186  public:
187 
188  // data types
189  // ------------------------------------------------------
190 
191  enum msrBeatsRepeatKind {
192  k_NoBeatsRepeat,
193  kStartBeatsRepeat, kStopBeatsRepeat };
194 
195  static string beatsRepeatKindAsString (
196  msrBeatsRepeatKind beatsRepeatKind);
197 
198  enum msrBeatsRepeatBuildPhaseKind {
199  kBeatsRepeatBuildPhaseJustCreated,
200  kBeatsRepeatBuildPhaseInPattern,
201  kBeatsRepeatBuildPhaseInReplicas,
202  kBeatsRepeatBuildPhaseCompleted};
203 
204  static string beatsRepeatBuildPhaseKindAsString (
205  msrBeatsRepeatBuildPhaseKind beatsRepeatBuildPhaseKind);
206 
207  // creation from MusicXML
208  // ------------------------------------------------------
209 
210  static SMARTP<msrBeatsRepeat> create (
211  int inputLineNumber,
212  int beatsRepeatMeasuresNumber,
213  int beatsRepeatSlashesNumber,
214  S_msrVoice voiceUpLink);
215 
216  SMARTP<msrBeatsRepeat> createBeatsRepeatNewbornClone (
217  S_msrVoice containingVoice);
218 
219  SMARTP<msrBeatsRepeat> createBeatsRepeatDeepCopy (
220  S_msrVoice containingVoice);
221 
222  protected:
223 
224  // constructors/destructor
225  // ------------------------------------------------------
226 
228  int inputLineNumber,
229  int beatsRepeatMeasuresNumber,
230  int beatsRepeatSlashesNumber,
231  S_msrVoice voiceUpLink);
232 
233  virtual ~msrBeatsRepeat ();
234 
235  public:
236 
237  // set and get
238  // ------------------------------------------------------
239 
240  // upLinks
241  S_msrVoice getBeatsRepeatVoiceUpLink () const
242  { return fBeatsRepeatVoiceUpLink; }
243 
244  // numbers
245  int getBeatsRepeatMeasuresNumber () const
246  { return fBeatsRepeatMeasuresNumber; }
247 
248  int getBeatsRepeatSlashesNumber () const
249  { return fBeatsRepeatSlashesNumber; }
250 
251  // beatsRepeat pattern
252  void setBeatsRepeatPattern (
253  S_msrBeatsRepeatPattern
254  beatsRepeatPattern);
255 
256  S_msrBeatsRepeatPattern
257  getBeatsRepeatPattern () const
258  { return fBeatsRepeatPattern; }
259 
260  // measures repeat replicas
261  void setBeatsRepeatReplicas (
262  S_msrBeatsRepeatReplicas
263  beatsRepeatReplicas);
264 
265  S_msrBeatsRepeatReplicas
266  getBeatsRepeatReplicas () const
267  { return fBeatsRepeatReplicas; }
268 
269  // measures repeat build phase
270  void setCurrentBeatsRepeatBuildPhaseKind (
271  msrBeatsRepeatBuildPhaseKind
272  beatsRepeatBuildPhaseKind)
273  {
274  fCurrentBeatsRepeatBuildPhaseKind =
275  beatsRepeatBuildPhaseKind;
276  }
277 
278  msrBeatsRepeatBuildPhaseKind
279  getCurrentBeatsRepeatBuildPhaseKind () const
280  { return fCurrentBeatsRepeatBuildPhaseKind; }
281 
282  // services
283  // ------------------------------------------------------
284 
285  int fetchBeatsRepeatReplicasNumber () const;
286 
287  int fetchBeatsRepeatPatternMeasuresNumber () const;
288  int fetchBeatsRepeatReplicasMeasuresNumber () const;
289 
290  void collectBeatsRepeatMeasuresIntoFlatList (
291  int inputLineNumber);
292 
293  public:
294 
295  // visitors
296  // ------------------------------------------------------
297 
298  virtual void acceptIn (basevisitor* v);
299  virtual void acceptOut (basevisitor* v);
300 
301  virtual void browseData (basevisitor* v);
302 
303  public:
304 
305  // print
306  // ------------------------------------------------------
307 
308  string asString () const;
309 
310  void displayBeatsRepeat (
311  int inputLineNumber,
312  string context);
313 
314  virtual void print (ostream& os) const;
315 
316  private:
317 
318  // fields
319  // ------------------------------------------------------
320 
321  // upLinks
322  S_msrVoice fBeatsRepeatVoiceUpLink;
323 
324  // numbers
325  int fBeatsRepeatMeasuresNumber;
326  int fBeatsRepeatSlashesNumber;
327 
328  // measures repeat pattern
329  S_msrBeatsRepeatPattern
330  fBeatsRepeatPattern;
331 
332  // measures repeat replicas
333  S_msrBeatsRepeatReplicas
334  fBeatsRepeatReplicas;
335 
336  // measures repeat build phase, used when building the measures repeat
337  msrBeatsRepeatBuildPhaseKind
338  fCurrentBeatsRepeatBuildPhaseKind;
339 };
340 typedef SMARTP<msrBeatsRepeat> S_msrBeatsRepeat;
341 EXP ostream& operator<< (ostream& os, const S_msrBeatsRepeat& elt);
342 
msrBeatsRepeat
Definition: msrBeatsRepeats_MUT_DEP.h:185
msrBeatsRepeatReplicas
Definition: msrBeatsRepeats_MUT_DEP.h:96
msrBeatsRepeatPattern
Definition: msrBeatsRepeats_MUT_DEP.h:8