LibMusicXML 3.18
msrGraceNotes_MUT_DEP.h
1/*
2 This file is to be included only by msrMutualDependencies.h,
3 to satisfy declarations mutual dependencies.
4*/
5
6//______________________________________________________________________________
7class msrGraceNotesGroup : public msrElement
8{
9 public:
10
11 // data types
12 // ------------------------------------------------------
13
14 enum msrGraceNotesGroupKind {
15 kGraceNotesGroupBefore,
16 kGraceNotesGroupAfter };
17
18 static string graceNotesGroupKindAsString (
19 msrGraceNotesGroupKind graceNotesGroupKind);
20
21 // creation from MusicXML
22 // ------------------------------------------------------
23
24 static SMARTP<msrGraceNotesGroup> create (
25 int inputLineNumber,
26 msrGraceNotesGroupKind graceNotesGroupKind,
27 bool graceNotesGroupIsSlashed,
28 S_msrVoice graceNotesGroupVoiceUpLink);
29
30 SMARTP<msrGraceNotesGroup> createGraceNotesGroupNewbornClone (
31 S_msrVoice containingVoice);
32
33 SMARTP<msrGraceNotesGroup> createSkipGraceNotesGroupClone (
34 S_msrVoice containingVoice);
35
36 SMARTP<msrGraceNotesGroup> createGraceNotesGroupDeepCopy (
37 S_msrVoice containingVoice);
38
39 protected:
40
41 // constructors/destructor
42 // ------------------------------------------------------
43
45 int inputLineNumber,
46 msrGraceNotesGroupKind graceNotesGroupKind,
47 bool graceNotesGroupIsSlashed,
48 S_msrVoice graceNotesGroupVoiceUpLink);
49
50 virtual ~msrGraceNotesGroup ();
51
52 public:
53
54 // set and get
55 // ------------------------------------------------------
56
57 S_msrVoice getGraceNotesGroupVoiceUpLink () const
58 { return fGraceNotesGroupVoiceUpLink; }
59
60 void setGraceNotesGroupNoteUpLink (
61 S_msrNote note)
62 { fGraceNotesGroupNoteUpLink = note; }
63
64 S_msrNote getGraceNotesGroupNoteUpLink () const
65 { return fGraceNotesGroupNoteUpLink; }
66
67 msrGraceNotesGroupKind
68 getGraceNotesGroupKind () const
69 { return fGraceNotesGroupKind; }
70
71 void setGraceNotesGroupKind (
72 msrGraceNotesGroupKind graceNotesGroupKind)
73 { fGraceNotesGroupKind = graceNotesGroupKind; }
74
75 list<S_msrMeasureElement>&
76 getGraceNotesGroupElementsList ()
77 { return fGraceNotesGroupElementsList; }
78
79 bool getGraceNotesGroupIsSlashed () const
80 { return fGraceNotesGroupIsSlashed; }
81
82 void setGraceNotesGroupIsTied ()
83 { fGraceNotesGroupIsTied = true; }
84
85 bool getGraceNotesGroupIsTied () const
86 { return fGraceNotesGroupIsTied; }
87
88 void setGraceNotesGroupIsFollowedByNotes (bool value)
89 { fGraceNotesGroupIsFollowedByNotes = value; }
90
91 bool getGraceNotesGroupIsFollowedByNotes () const
92 { return fGraceNotesGroupIsFollowedByNotes; }
93
94 void setGraceNotesGroupMeasureNumber (
95 string graceNotesGroupMeasureNumber)
96 {
97 fGraceNotesGroupMeasureNumber =
98 graceNotesGroupMeasureNumber;
99 }
100
101 string getGraceNotesGroupMeasureNumber () const
102 { return fGraceNotesGroupMeasureNumber; }
103
104 // services
105 // ------------------------------------------------------
106
107 S_msrPart fetchGraceNotesGroupPartUpLink () const;
108
109 void appendNoteToGraceNotesGroup (S_msrNote note);
110 void appendChordToGraceNotesGroup (S_msrChord chord);
111
112 S_msrNote removeLastNoteFromGraceNotesGroup (
113 int inputLineNumber);
114
115
116 public:
117
118 // visitors
119 // ------------------------------------------------------
120
121 virtual void acceptIn (basevisitor* v);
122 virtual void acceptOut (basevisitor* v);
123
124 virtual void browseData (basevisitor* v);
125
126 public:
127
128 // print
129 // ------------------------------------------------------
130
131 string asShortString () const;
132 string asString () const;
133
134 virtual void print (ostream& os) const;
135
136 private:
137
138 // fields
139 // ------------------------------------------------------
140
141 // upLinks
142 S_msrVoice fGraceNotesGroupVoiceUpLink;
143 S_msrNote fGraceNotesGroupNoteUpLink;
144
145 msrGraceNotesGroupKind
146 fGraceNotesGroupKind;
147
148 list<S_msrMeasureElement>
149 fGraceNotesGroupElementsList;
150
151 bool fGraceNotesGroupIsSlashed;
152 bool fGraceNotesGroupIsTied;
153
154 bool fGraceNotesGroupIsFollowedByNotes;
155
156 // LilyPond issue 34 may lead to add skip grace notes to voices
157 // other than the one containing these grace notes:
158 // the measure number is needed to create the first measure
159 // in case the grace notes are at the beginning of the voice
160 string fGraceNotesGroupMeasureNumber; // JMI ???
161};
162typedef SMARTP<msrGraceNotesGroup> S_msrGraceNotesGroup;
163EXP ostream& operator<< (ostream& os, const S_msrGraceNotesGroup& elt);
164
Definition: msrGraceNotes_MUT_DEP.h:8