LibMusicXML  3.18
msrBars.h
1 /*
2  MusicXML Library
3  Copyright (C) Grame 2006-2013
4 
5  This Source Code Form is subject to the terms of the Mozilla Public
6  License, v. 2.0. If a copy of the MPL was not distributed with this
7  file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10  research@grame.fr
11 */
12 
13 #ifndef ___msrBars___
14 #define ___msrBars___
15 
16 #include <list>
17 
18 #include "msrMeasureElements.h"
19 
20 #include "msrBasicTypes.h"
21 
22 
23 namespace MusicXML2
24 {
25 
26 //______________________________________________________________________________
28 {
29  public:
30 
31  // creation from MusicXML
32  // ------------------------------------------------------
33 
34  static SMARTP<msrBarCheck> create (
35  int inputLineNumber);
36 
37  static SMARTP<msrBarCheck> createWithNextBarPuristNumber (
38  int inputLineNumber,
39  string nextBarOriginalNumber,
40  int nextBarPuristNumber);
41 
42  protected:
43 
44  // constructors/destructor
45  // ------------------------------------------------------
46 
47  msrBarCheck (
48  int inputLineNumber);
49 
50  msrBarCheck (
51  int inputLineNumber,
52  string nextBarOriginalNumber,
53  int nextBarPuristNumber);
54 
55  virtual ~msrBarCheck ();
56 
57  public:
58 
59  // set and get
60  // ------------------------------------------------------
61 
62  string getNextBarOriginalNumber () const
63  { return fNextBarOriginalNumber; }
64 
65  void setNextBarPuristNumber (int puristNumber);
66 
67  int getNextBarPuristNumber () const
68  { return fNextBarPuristNumber; }
69 
70  // services
71  // ------------------------------------------------------
72 
73  public:
74 
75  // visitors
76  // ------------------------------------------------------
77 
78  virtual void acceptIn (basevisitor* v);
79  virtual void acceptOut (basevisitor* v);
80 
81  virtual void browseData (basevisitor* v);
82 
83  public:
84 
85  // print
86  // ------------------------------------------------------
87 
88  string asString () const;
89 
90  virtual void print (ostream& os) const;
91 
92  private:
93 
94  // fields
95  // ------------------------------------------------------
96 
97  string fNextBarOriginalNumber;
98  int fNextBarPuristNumber;
99 };
101 EXP ostream& operator<< (ostream& os, const S_msrBarCheck& elt);
102 
103 //______________________________________________________________________________
105 {
106  public:
107 
108  // creation from MusicXML
109  // ------------------------------------------------------
110 
111  static SMARTP<msrBarNumberCheck> create (
112  int inputLineNumber,
113  string nextBarOriginalNumber,
114  int nextBarPuristNumber);
115 
116  protected:
117 
118  // constructors/destructor
119  // ------------------------------------------------------
120 
122  int inputLineNumber,
123  string nextBarOriginalNumber,
124  int nextBarPuristNumber);
125 
126  virtual ~msrBarNumberCheck ();
127 
128  public:
129 
130  // set and get
131  // ------------------------------------------------------
132 
133  string getNextBarOriginalNumber () const
134  { return fNextBarOriginalNumber; }
135 
136  int getNextBarPuristNumber () const
137  { return fNextBarPuristNumber; }
138 
139  // services
140  // ------------------------------------------------------
141 
142  string asString () const;
143 
144  public:
145 
146  // visitors
147  // ------------------------------------------------------
148 
149  virtual void acceptIn (basevisitor* v);
150  virtual void acceptOut (basevisitor* v);
151 
152  virtual void browseData (basevisitor* v);
153 
154  public:
155 
156  // print
157  // ------------------------------------------------------
158 
159  virtual void print (ostream& os) const;
160 
161  private:
162 
163  // fields
164  // ------------------------------------------------------
165 
166  string fNextBarOriginalNumber;
167  int fNextBarPuristNumber;
168 };
170 EXP ostream& operator<< (ostream& os, const S_msrBarNumberCheck& elt);
171 
172 //______________________________________________________________________________
174 {
175  public:
176 
177  // data types
178  // ------------------------------------------------------
179 
180  // location
181  enum msrBarlineLocationKind {
182  kBarlineLocationNone,
183 
184  kBarlineLocationLeft,
185  kBarlineLocationMiddle,
186  kBarlineLocationRight }; // by default
187 
188  static string barlineLocationKindAsString (
189  msrBarlineLocationKind barlineLocationKind);
190 
191  // style
192  enum msrBarlineStyleKind {
193  kBarlineStyleNone,
194 
195  kBarlineStyleRegular, // by default
196 
197  kBarlineStyleDotted, kBarlineStyleDashed, kBarlineStyleHeavy,
198  kBarlineStyleLightLight, kBarlineStyleLightHeavy,
199  kBarlineStyleHeavyLight, kBarlineStyleHeavyHeavy,
200  kBarlineStyleTick, kBarlineStyleShort };
201 
202  static string barlineStyleKindAsString (
203  msrBarlineStyleKind barlineStyleKind);
204 
205  // repeat direction
206  enum msrBarlineRepeatDirectionKind {
207  kBarlineRepeatDirectionNone,
208  kBarlineRepeatDirectionForward, kBarlineRepeatDirectionBackward };
209 
210  static string barlineRepeatDirectionKindAsString (
211  msrBarlineRepeatDirectionKind barlineRepeatDirectionKind);
212 
213  // ending type
214  enum msrBarlineEndingTypeKind {
215  kBarlineEndingNone,
216 
217  kBarlineEndingTypeStart,
218  kBarlineEndingTypeStop,
219  kBarlineEndingTypeDiscontinue };
220 
221  static string barlineEndingTypeKindAsString (
222  msrBarlineEndingTypeKind barlineEndingTypeKind);
223 
224  // category
225  enum msrBarlineCategoryKind {
226  k_NoBarlineCategory,
227 
228  kBarlineCategoryStandalone,
229 
230  kBarlineCategoryRepeatStart, kBarlineCategoryRepeatEnd,
231 
232  kBarlineCategoryHookedEndingStart, kBarlineCategoryHookedEndingEnd,
233  kBarlineCategoryHooklessEndingStart, kBarlineCategoryHooklessEndingEnd };
234 
235  static string barlineCategoryKindAsString (
236  msrBarlineCategoryKind barlineCategoryKind);
237 
238  // segno
239  enum msrBarlineHasSegnoKind {
240  kBarlineHasSegnoYes, kBarlineHasSegnoNo};
241 
242  static string barlineHasSegnoKindAsString (
243  msrBarlineHasSegnoKind barlineHasSegnoKind);
244 
245  // coda
246  enum msrBarlineHasCodaKind {
247  kBarlineHasCodaYes, kBarlineHasCodaNo};
248 
249  static string barlineHasCodaKindAsString (
250  msrBarlineHasCodaKind barlineHasCodaKind);
251 
252  // repeat winged
253  enum msrBarlineRepeatWingedKind {
254  kBarlineRepeatWingedNone,
255 
256  kBarlineRepeatWingedStraight, kBarlineRepeatWingedCurved,
257  kBarlineRepeatWingedDoubleStraight, kBarlineRepeatWingedDoubleCurved };
258 
259  static string barlineRepeatWingedKindAsString (
260  msrBarlineRepeatWingedKind barlineRepeatWingedKind);
261 
262  // creation from MusicXML
263  // ------------------------------------------------------
264 
265  static SMARTP<msrBarline> create (
266  int inputLineNumber,
267  msrBarlineLocationKind barlineLocationKind,
268  msrBarlineStyleKind barlineStyleKind,
269  msrBarlineRepeatDirectionKind barlineRepeatDirectionKind,
270  msrBarlineEndingTypeKind barlineEndingTypeKind,
271  string endingNumber,
272  int barlineTimes,
273  msrBarlineCategoryKind barlineCategoryKind,
274  msrBarlineHasSegnoKind barlineHasSegnoKind,
275  msrBarlineHasCodaKind barlineHasCodaKind,
276  msrBarlineRepeatWingedKind barlineRepeatWingedKind);
277 
278  protected:
279 
280  // constructors/destructor
281  // ------------------------------------------------------
282 
283  msrBarline (
284  int inputLineNumber,
285  msrBarlineLocationKind barlineLocationKind,
286  msrBarlineStyleKind barlineStyleKind,
287  msrBarlineRepeatDirectionKind barlineRepeatDirectionKind,
288  msrBarlineEndingTypeKind barlineEndingTypeKind,
289  string endingNumber,
290  int barlineTimes,
291  msrBarlineCategoryKind barlineCategoryKind,
292  msrBarlineHasSegnoKind barlineHasSegnoKind,
293  msrBarlineHasCodaKind barlineHasCodaKind,
294  msrBarlineRepeatWingedKind barlineRepeatWingedKind);
295 
296  virtual ~msrBarline ();
297 
298  public:
299 
300  // set and get
301  // ------------------------------------------------------
302 
303  msrBarlineLocationKind
304  getLocation () const // JMI
305  { return fLocationKind; }
306 
307  msrBarlineStyleKind getBarlineStyleKind () const
308  { return fStyleKind; }
309 
310  msrBarlineRepeatDirectionKind
311  getRepeatDirection () const
312  { return fRepeatDirectionKind; }
313 
314  msrBarlineRepeatWingedKind
315  getRepeatWinged () const
316  { return fRepeatWingedKind; }
317 
318  msrBarlineEndingTypeKind
319  getEndingType () const
320  { return fEndingTypeKind; }
321 
322  string getEndingNumber () const
323  { return fEndingNumber; }
324 
325  msrBarlineCategoryKind
326  getBarlineCategory () const
327  { return fBarlineCategoryKind; }
328 
329  void setBarlineCategory (
330  msrBarlineCategoryKind barlineCategoryKind);
331 
332  int getBarlineTimes () const
333  { return fBarlineTimes; }
334 
335  msrBarlineHasSegnoKind
336  getBarlineHasSegnoKind () const
337  { return fBarlineHasSegnoKind; }
338  msrBarlineHasCodaKind getBarlineHasCodaKind () const
339  { return fBarlineHasCodaKind; }
340 
341  private:
342 
343  // private services
344  // ------------------------------------------------------
345 
346  const list<int>& getEndingNumbersList () const
347  { return fEndingNumbersList; }
348 
349  public:
350 
351  // visitors
352  // ------------------------------------------------------
353 
354  virtual void acceptIn (basevisitor* v);
355  virtual void acceptOut (basevisitor* v);
356 
357  virtual void browseData (basevisitor* v);
358 
359  public:
360 
361  // print
362  // ------------------------------------------------------
363 
364  string endingNumbersListAsString () const;
365 
366  string asString () const;
367  string asShortString () const;
368 
369  virtual void print (ostream& os) const;
370 
371  private:
372 
373  // fields
374  // ------------------------------------------------------
375 
376  msrBarlineLocationKind
377  fLocationKind;
378 
379  msrBarlineStyleKind fStyleKind;
380 
381  msrBarlineRepeatDirectionKind
382  fRepeatDirectionKind;
383 
384  msrBarlineRepeatWingedKind
385  fRepeatWingedKind;
386 
387 
388 
389  msrBarlineEndingTypeKind
390  fEndingTypeKind;
391  string fEndingNumber; // may be "1, 2"
392 
393  int fBarlineTimes;
394 
395  msrBarlineCategoryKind
396  fBarlineCategoryKind;
397 
398  msrBarlineHasSegnoKind
399  fBarlineHasSegnoKind;
400  msrBarlineHasCodaKind fBarlineHasCodaKind;
401 
402  // the numbers extracted from fEndingNumber
403  list<int> fEndingNumbersList;
404 };
406 EXP ostream& operator<< (ostream& os, const S_msrBarline& elt);
407 
408 
409 } // namespace MusicXML2
410 
411 
412 #endif
MusicXML2::msrBarNumberCheck
Definition: msrBars.h:105
MusicXML2::msrBarline
Definition: msrBars.h:174
MusicXML2::msrMeasureElement
Definition: msrMeasureElements.h:24
MusicXML2::SMARTP< msrBarCheck >
MusicXML2::basevisitor
Definition: basevisitor.h:25
MusicXML2::msrBarCheck
Definition: msrBars.h:28