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
23namespace 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
48 int inputLineNumber);
49
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};
101EXP 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};
170EXP 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};
406EXP ostream& operator<< (ostream& os, const S_msrBarline& elt);
407
408
409} // namespace MusicXML2
410
411
412#endif
Definition: basevisitor.h:25
Definition: msrBars.h:28
Definition: msrBars.h:105
Definition: msrBars.h:174
Definition: msrMeasureElements.h:24