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 //______________________________________________________________________________
7 class 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 };
162 typedef SMARTP<msrGraceNotesGroup> S_msrGraceNotesGroup;
163 EXP ostream& operator<< (ostream& os, const S_msrGraceNotesGroup& elt);
164 
Definition: msrGraceNotes_MUT_DEP.h:8