LibMusicXML 3.18
msr2Summary.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 ___msr2Summary___
14#define ___msr2Summary___
15
16#include "msr.h"
17
18#include "msrOah.h"
19
20namespace MusicXML2
21{
22
23//________________________________________________________________________
25
26 public visitor<S_msrScore>,
27
28 // parts & part groups
29
30 public visitor<S_msrPartGroup>,
31
32 public visitor<S_msrPart>,
33
34 // staves
35
36 public visitor<S_msrStaff>,
37
38 public visitor<S_msrVoice>,
39
40 // lyrics
41
42 public visitor<S_msrStanza>,
43 public visitor<S_msrSyllable>,
44
45 public visitor<S_msrClef>,
46 public visitor<S_msrKey>,
47 public visitor<S_msrTime>,
48 public visitor<S_msrTempo>,
49
50 public visitor<S_msrSegment>,
51
52 public visitor<S_msrArticulation>,
53
54 public visitor<S_msrDynamics>,
55 public visitor<S_msrWedge>,
56
57 public visitor<S_msrGraceNotesGroup>,
58
59 public visitor<S_msrNote>,
60
61 public visitor<S_msrStem>,
62 public visitor<S_msrBeam>,
63
64 public visitor<S_msrChord>,
65
66 public visitor<S_msrTuplet>,
67
68 public visitor<S_msrSlur>,
69
70 public visitor<S_msrBarline>,
71 public visitor<S_msrBarNumberCheck>,
72 public visitor<S_msrLineBreak>,
73
74 public visitor<S_msrRepeat>,
75
76 public visitor<S_msrVarValAssoc>,
77 public visitor<S_msrVarValsListAssoc>,
78
79 public visitor<S_msrScaling>,
80 public visitor<S_msrPageLayout>,
81
82 public visitor<S_msrMidiTempo>
83
84{
85 public:
86
88 S_msrOah& msrOpts,
89 indentedOstream& ios);
90
91 virtual ~msr2SummaryVisitor ();
92
93 void printSummaryFromMsrScore (
94 const S_msrScore& score);
95
96 protected:
97
98 virtual void visitStart (S_msrScore& elt);
99 virtual void visitEnd (S_msrScore& elt);
100
101 virtual void visitStart (S_msrPartGroup& elt);
102 virtual void visitEnd (S_msrPartGroup& elt);
103
104 virtual void visitStart (S_msrPart& elt);
105 virtual void visitEnd (S_msrPart& elt);
106
107 virtual void visitStart (S_msrStaff& elt);
108 virtual void visitEnd (S_msrStaff& elt);
109
110 virtual void visitStart (S_msrVoice& elt);
111 virtual void visitEnd (S_msrVoice& elt);
112
113 virtual void visitStart (S_msrStanza& elt);
114 virtual void visitEnd (S_msrStanza& elt);
115
116 virtual void visitStart (S_msrSyllable& elt);
117 virtual void visitEnd (S_msrSyllable& elt);
118
119 virtual void visitStart (S_msrClef& elt);
120 virtual void visitEnd (S_msrClef& elt);
121
122 virtual void visitStart (S_msrKey& elt);
123 virtual void visitEnd (S_msrKey& elt);
124
125 virtual void visitStart (S_msrTime& elt);
126 virtual void visitEnd (S_msrTime& elt);
127
128 virtual void visitStart (S_msrTempo& elt);
129 virtual void visitEnd (S_msrTempo& elt);
130
131 virtual void visitStart (S_msrSegment& elt);
132 virtual void visitEnd (S_msrSegment& elt);
133
134 virtual void visitStart (S_msrArticulation& elt);
135 virtual void visitEnd (S_msrArticulation& elt);
136
137 virtual void visitStart (S_msrDynamics& elt);
138 virtual void visitEnd (S_msrDynamics& elt);
139
140 virtual void visitStart (S_msrWedge& elt);
141 virtual void visitEnd (S_msrWedge& elt);
142
143 virtual void visitStart (S_msrGraceNotesGroup& elt);
144 virtual void visitEnd (S_msrGraceNotesGroup& elt);
145
146 virtual void visitStart (S_msrNote& elt);
147 virtual void visitEnd (S_msrNote& elt);
148
149 virtual void visitStart (S_msrStem& elt);
150 virtual void visitEnd (S_msrStem& elt);
151
152 virtual void visitStart (S_msrBeam& elt);
153 virtual void visitEnd (S_msrBeam& elt);
154
155 virtual void visitStart (S_msrChord& elt);
156 virtual void visitEnd (S_msrChord& elt);
157
158 virtual void visitStart (S_msrTuplet& elt);
159 virtual void visitEnd (S_msrTuplet& elt);
160
161 virtual void visitStart (S_msrSlur& elt);
162 virtual void visitEnd (S_msrSlur& elt);
163
164 virtual void visitStart (S_msrBarline& elt);
165 virtual void visitEnd (S_msrBarline& elt);
166
167 virtual void visitStart (S_msrBarNumberCheck& elt);
168 virtual void visitEnd (S_msrBarNumberCheck& elt);
169
170 virtual void visitStart (S_msrLineBreak& elt);
171 virtual void visitEnd (S_msrLineBreak& elt);
172
173 virtual void visitStart (S_msrRepeat& elt);
174 virtual void visitEnd (S_msrRepeat& elt);
175
176 virtual void visitStart (S_msrVarValAssoc& elt);
177 virtual void visitEnd (S_msrVarValAssoc& elt);
178 virtual void visitStart (S_msrVarValsListAssoc& elt);
179 virtual void visitEnd (S_msrVarValsListAssoc& elt);
180
181 virtual void visitStart (S_msrScaling& elt);
182 virtual void visitEnd (S_msrScaling& elt);
183
184 virtual void visitStart (S_msrPageLayout& elt);
185 virtual void visitEnd (S_msrPageLayout& elt);
186
187 virtual void visitStart (S_msrMidiTempo& elt);
188 virtual void visitEnd (S_msrMidiTempo& elt);
189
190 private:
191
192 S_msrOah fMsrOah;
193
194 indentedOstream& fMsrSummaryOutputStream;
195
196 // score
197 // ------------------------------------------------------
198
199 // part groups
200 // ------------------------------------------------------
201
202 int fPartGroupsCounter;
203
204 // parts
205 // ------------------------------------------------------
206
207 int fPartsCounter;
208
209 // staves
210 // ------------------------------------------------------
211
212 int fStavesCounter;
213
214 // prevent clef, key and time from being handled twice
215 bool fOnGoingStaff;
216
217 // voices
218 // ------------------------------------------------------
219
220 int fVoicesCounter;
221
222 // stanzas
223 // ------------------------------------------------------
224
225 int fStanzasCounter;
226
227 // notes
228 // ------------------------------------------------------
229
230 int fScoreUnpitchedNotesCounter;
231 int fScoreStandaloneNotesCounter;
232 int fScoreRestNotesCounter;
233 int fScoreSkipNotesCounter;
234 int fScoreDoubleTremoloNotesCounter;
235 int fScoreGraceNotesGroupCounter;
236
237 // chords
238 // ------------------------------------------------------
239
240 int fScoreChordNotesCounter;
241 int fScoreChordsCounter;
242
243 // tuplets
244 // ------------------------------------------------------
245
246 int fScoreTupletNotesCounter;
247 int fScoreTupletsCounter;
248};
249
250
251}
252
253
254#endif
Definition: utilities.h:213
Definition: msr2Summary.h:84
Definition: visitor.h:27