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 
20 namespace 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