LibMusicXML  3.18
bsr2BsrFinalizer.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 ___bsr2BsrFinalizer___
14 #define ___bsr2BsrFinalizer___
15 
16 #include "bsr.h"
17 
18 #include "bsrOah.h"
19 
20 
21 namespace MusicXML2
22 {
23 
24 //________________________________________________________________________
26 
27  public visitor<S_bsrScore>,
28 
29  public visitor<S_bsrSpaces>,
30 
31  public visitor<S_bsrBarline>,
32 
33  public visitor<S_bsrTranscriptionNotes>,
34  public visitor<S_bsrTranscriptionNotesElement>,
35 
36  public visitor<S_bsrPage>,
37 
38  public visitor<S_bsrPageHeading>,
39  public visitor<S_bsrMusicHeading>,
40 
41  public visitor<S_bsrFootNotes>,
42 
43  public visitor<S_bsrLine>,
44  public visitor<S_bsrLineContents>,
45 
46  public visitor<S_bsrMeasure>,
47 
48  public visitor<S_bsrNumber>,
49  public visitor<S_bsrWords>,
50 
51  public visitor<S_bsrClef>,
52  public visitor<S_bsrKey>,
53  public visitor<S_bsrTime>,
54 
55  public visitor<S_bsrTempo>,
56 
57  public visitor<S_bsrNote>
58 
59 {
60  public:
61 
63  S_bsrOah& bsrOpts,
64  indentedOstream& logOstream,
65  S_bsrScore bScore);
66 
67  virtual ~bsr2BsrFinalizer ();
68 
69  void generateFinalizedBsrScoreFromBsrScore ();
70 
71  S_bsrScore getBsrScore () const
72  { return fBsrScore; }
73 
74  protected:
75 
76  virtual void visitStart (S_bsrScore& elt);
77  virtual void visitEnd (S_bsrScore& elt);
78 
79  virtual void visitStart (S_bsrSpaces& elt);
80  virtual void visitEnd (S_bsrSpaces& elt);
81 
82  virtual void visitStart (S_bsrBarline& elt);
83 
84  virtual void visitStart (S_bsrTranscriptionNotes& elt);
85  virtual void visitEnd (S_bsrTranscriptionNotes& elt);
86 
87  virtual void visitStart (S_bsrTranscriptionNotesElement& elt);
88  virtual void visitEnd (S_bsrTranscriptionNotesElement& elt);
89 
90  virtual void visitStart (S_bsrPage& elt);
91  virtual void visitEnd (S_bsrPage& elt);
92 
93  virtual void visitStart (S_bsrPageHeading& elt);
94  virtual void visitEnd (S_bsrPageHeading& elt);
95  virtual void visitStart (S_bsrMusicHeading& elt);
96  virtual void visitEnd (S_bsrMusicHeading& elt);
97 
98  virtual void visitStart (S_bsrFootNotes& elt);
99  virtual void visitEnd (S_bsrFootNotes& elt);
100 
101  virtual void visitStart (S_bsrLine& elt);
102  virtual void visitEnd (S_bsrLine& elt);
103  virtual void visitStart (S_bsrLineContents& elt);
104  virtual void visitEnd (S_bsrLineContents& elt);
105 
106  virtual void visitStart (S_bsrMeasure& elt);
107  virtual void visitEnd (S_bsrMeasure& elt);
108 
109  virtual void visitStart (S_bsrNumber& elt);
110  virtual void visitEnd (S_bsrNumber& elt);
111 
112  virtual void visitStart (S_bsrWords& elt);
113  virtual void visitEnd (S_bsrWords& elt);
114 
115  virtual void visitStart (S_bsrClef& elt);
116  virtual void visitEnd (S_bsrClef& elt);
117 
118  virtual void visitStart (S_bsrKey& elt);
119  virtual void visitEnd (S_bsrKey& elt);
120 
121  virtual void visitStart (S_bsrTime& elt);
122  virtual void visitEnd (S_bsrTime& elt);
123 
124  virtual void visitStart (S_bsrTempo& elt);
125  virtual void visitEnd (S_bsrTempo& elt);
126 
127  virtual void visitStart (S_bsrNote& elt);
128  virtual void visitEnd (S_bsrNote& elt);
129 
130  private:
131 
132  // the MSR score we're relying on
133  // ------------------------------------------------------
134  S_msrScore fBaseMsrScore;
135 
136  // the BSR score we're visiting
137  // ------------------------------------------------------
138  S_bsrScore fVisitedBsrScore;
139 
140  // the BSR score we're building
141  // ------------------------------------------------------
142  S_bsrScore fBsrScore;
143 
144  // pages & lines
145  // ------------------------------------------------------
146 
147  S_bsrPage fCurrentPage;
148  S_bsrLine fCurrentLine;
149 
150  // headings
151  // ------------------------------------------------------
152 
153  S_bsrPageHeading fCurrentPageHeading;
154  S_bsrMusicHeading fCurrentMusicHeading;
155 
156  // foot notes
157  // ------------------------------------------------------
158 
159  S_bsrFootNotes fCurrentFootNotes;
160 
161  // measures
162  // ------------------------------------------------------
163 
164  S_bsrMeasure fCurrentMeasure;
165 
166  // options
167  // ------------------------------------------------------
168 
169  S_bsrOah fBsrOah;
170 
171  // log output stream
172  // ------------------------------------------------------
173 
174  indentedOstream& fLogOutputStream;
175 };
176 
177 
178 }
179 
180 
181 #endif
Definition: bsr2BsrFinalizer.h:59
Definition: utilities.h:213
Definition: visitor.h:27