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 //________________________________________________________________________ 25 class bsr2BsrFinalizer : 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 62 bsr2BsrFinalizer ( 63 S_bsrOah& bsrOpts, 64 indentedOstream& logOstream, 65 S_bsrScore bScore); 66 67 virtual ~bsr2BsrFinalizer (); 68 69 void generateFinalizedBsrScoreFromBsrScore (); 70 getBsrScore()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 182