LibMusicXML  3.18
msrSlurs.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 ___msrSlurs___
14 #define ___msrSlurs___
15 
16 #include "msrElements.h"
17 
18 #include "msrBasicTypes.h"
19 
20 
21 namespace MusicXML2
22 {
23 
24 //______________________________________________________________________________
25 class msrSlur : public msrElement
26 {
27  public:
28 
29  // data types
30  // ------------------------------------------------------
31 
32  enum msrSlurTypeKind {
33  k_NoSlur,
34  kRegularSlurStart, kPhrasingSlurStart,
35  kSlurContinue,
36  kRegularSlurStop, kPhrasingSlurStop};
37 
38  static string slurTypeKindAsString (
39  msrSlurTypeKind slurKind);
40 
41  // creation from MusicXML
42  // ------------------------------------------------------
43 
44  static SMARTP<msrSlur> create (
45  int inputLineNumber,
46  int slurNumber,
47  msrSlurTypeKind slurKind,
48  msrLineTypeKind slurLineTypeKind);
49 
50  protected:
51 
52  // constructors/destructor
53  // ------------------------------------------------------
54 
55  msrSlur (
56  int inputLineNumber,
57  int slurNumber,
58  msrSlurTypeKind slurKind,
59  msrLineTypeKind slurLineTypeKind);
60 
61  virtual ~msrSlur ();
62 
63  public:
64 
65  // set and get
66  // ------------------------------------------------------
67 
68  int getSlurNumber () const
69  { return fSlurNumber; }
70 
71  void setSlurTypeKind (msrSlurTypeKind slurTypeKind)
72  { fSlurTypeKind = slurTypeKind; }
73 
74  msrSlurTypeKind getSlurTypeKind () const
75  { return fSlurTypeKind; }
76 
77  msrLineTypeKind getSlurLineTypeKind () const
78  { return fSlurLineTypeKind; }
79 
80  // services
81  // ------------------------------------------------------
82 
83  public:
84 
85  // visitors
86  // ------------------------------------------------------
87 
88  virtual void acceptIn (basevisitor* v);
89  virtual void acceptOut (basevisitor* v);
90 
91  virtual void browseData (basevisitor* v);
92 
93  public:
94 
95  // print
96  // ------------------------------------------------------
97 
98  string slurTypeKindAsString () const;
99 
100  string asString () const;
101 
102  virtual void print (ostream& os) const;
103 
104  private:
105 
106  // fields
107  // ------------------------------------------------------
108 
109  int fSlurNumber;
110 
111  msrSlurTypeKind fSlurTypeKind;
112 
113  msrLineTypeKind fSlurLineTypeKind;
114 };
115 typedef SMARTP<msrSlur> S_msrSlur;
116 EXP ostream& operator<< (ostream& os, const S_msrSlur& elt);
117 
118 
119 } // namespace MusicXML2
120 
121 
122 #endif
the smart pointer implementation
Definition: smartpointer.h:58
Definition: basevisitor.h:25
Definition: msrElements.h:26
Definition: msrSlurs.h:26