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 ___lpsrBookBlockElements___
14 #define ___lpsrBookBlockElements___
15 
16 /*
17 #include <sstream>
18 #include <vector>
19 #include <string>
20 #include <list>
21 
22 
23 #include "exports.h"
24 #include "typedefs.h"
25 
26 #include "msrBasicTypes.h"
27 
28 
29 #include "lpsrVarValAssocs.h"
30 
31 #include "lpsrScheme.h"
32 */
33 
34 #include "lpsrComments.h"
35 
36 #include "lpsrScheme.h"
37 
38 #include "lpsrHeaders.h"
39 #include "lpsrPapers.h"
40 #include "lpsrLayouts.h"
41 
42 #include "lpsrParallelMusic.h"
43 #include "lpsrVarValAssocs.h"
44 
45 //#include "msrBlocks.h"
46 
47 #include "msrMidi.h"
48 
49 
50 namespace MusicXML2
51 {
52 
53 //______________________________________________________________________________
54 class lpsrBookBlockElement : public lpsrElement
55 {
56   public:
57 
58     // creation from MusicXML
59     // ------------------------------------------------------
60 
61     static SMARTP<lpsrBookBlockElement> create (
62       int inputLineNumber);
63 
64   protected:
65 
66     // constructors/destructor
67     // ------------------------------------------------------
68 
69     lpsrBookBlockElement (
70       int inputLineNumber);
71 
72     virtual ~lpsrBookBlockElement ();
73 
74   public:
75 
76     // set and get
77     // ------------------------------------------------------
78 
getBookBlockElementHeader()79     S_lpsrHeader          getBookBlockElementHeader () const
80                               { return fBookBlockElementHeader; }
81 
82     S_lpsrParallelMusicBLock
getBlockElementParallelMusicBLock()83                           getBlockElementParallelMusicBLock () const
84                               {
85                                 return
86                                   fBookBlockElementParallelMusicBlock;
87                               }
88 
89     // services
90     // ------------------------------------------------------
91 
92     void                  appendPartGroupBlockToBlockElement (
93                             S_lpsrPartGroupBlock partGroupBlock);
94 
95   public:
96 
97     // visitors
98     // ------------------------------------------------------
99 
100     virtual void          acceptIn  (basevisitor* v);
101     virtual void          acceptOut (basevisitor* v);
102 
103     virtual void          browseData (basevisitor* v);
104 
105   public:
106 
107     // print
108     // ------------------------------------------------------
109 
110     virtual void          print (ostream& os) const;
111 
112   protected:
113 
114     // fields
115     // ------------------------------------------------------
116 
117     S_lpsrHeader          fBookBlockElementHeader;
118 
119     S_lpsrParallelMusicBLock
120                           fBookBlockElementParallelMusicBlock;
121 };
122 typedef SMARTP<lpsrBookBlockElement> S_lpsrBookBlockElement;
123 EXP ostream& operator<< (ostream& os, const S_lpsrBookBlockElement& elt);
124 
125 //______________________________________________________________________________
126 class lpsrScoreBlock : public lpsrBookBlockElement
127 {
128   public:
129 
130     // creation from MusicXML
131     // ------------------------------------------------------
132 
133     static SMARTP<lpsrScoreBlock> create (
134       int inputLineNumber);
135 
136   protected:
137 
138     // constructors/destructor
139     // ------------------------------------------------------
140 
141     lpsrScoreBlock (
142       int inputLineNumber);
143 
144     virtual ~lpsrScoreBlock ();
145 
146   public:
147 
148     // set and get
149     // ------------------------------------------------------
150 
getScoreBlockLayout()151     S_lpsrLayout          getScoreBlockLayout () const
152                             { return fScoreBlockLayout; }
153 
getScoreBlockMidiTempo()154     S_msrMidiTempo        getScoreBlockMidiTempo () const
155                               { return fScoreBlockMidiTempo; }
156 
157     // services
158     // ------------------------------------------------------
159 
160     void                  appendPartGroupBlockToScoreBlock (
161                             S_lpsrPartGroupBlock partGroupBlock);
162 
163   public:
164 
165     // visitors
166     // ------------------------------------------------------
167 
168     virtual void          acceptIn  (basevisitor* v);
169     virtual void          acceptOut (basevisitor* v);
170 
171     virtual void          browseData (basevisitor* v);
172 
173   public:
174 
175     // print
176     // ------------------------------------------------------
177 
178     virtual void          print (ostream& os) const;
179 
180   private:
181 
182     // fields
183     // ------------------------------------------------------
184 
185     S_lpsrLayout          fScoreBlockLayout;
186 
187     S_msrMidiTempo        fScoreBlockMidiTempo;
188 };
189 typedef SMARTP<lpsrScoreBlock> S_lpsrScoreBlock;
190 EXP ostream& operator<< (ostream& os, const S_lpsrScoreBlock& elt);
191 
192 //______________________________________________________________________________
193 class lpsrBookPartBlock : public lpsrBookBlockElement
194 {
195   public:
196 
197     // creation from MusicXML
198     // ------------------------------------------------------
199 
200     static SMARTP<lpsrBookPartBlock> create (
201       int inputLineNumber);
202 
203   protected:
204 
205     // constructors/destructor
206     // ------------------------------------------------------
207 
208     lpsrBookPartBlock (
209       int inputLineNumber);
210 
211     virtual ~lpsrBookPartBlock ();
212 
213   public:
214 
215     // set and get
216     // ------------------------------------------------------
217 
218     // services
219     // ------------------------------------------------------
220 
221     void                  appendPartGroupBlockToBookPartBlock (
222                             S_lpsrPartGroupBlock partGroupBlock);
223 
224   public:
225 
226     // visitors
227     // ------------------------------------------------------
228 
229     virtual void          acceptIn  (basevisitor* v);
230     virtual void          acceptOut (basevisitor* v);
231 
232     virtual void          browseData (basevisitor* v);
233 
234   public:
235 
236     // print
237     // ------------------------------------------------------
238 
239     virtual void          print (ostream& os) const;
240 
241   private:
242 
243     // fields
244     // ------------------------------------------------------
245 };
246 typedef SMARTP<lpsrBookPartBlock> S_lpsrBookPartBlock;
247 EXP ostream& operator<< (ostream& os, const S_lpsrBookPartBlock& elt);
248 
249 //______________________________________________________________________________
250 class lpsrBookBlock : public lpsrElement
251 {
252   public:
253 
254     // creation from MusicXML
255     // ------------------------------------------------------
256 
257     static SMARTP<lpsrBookBlock> create (
258       int inputLineNumber);
259 
260   protected:
261 
262     // constructors/destructor
263     // ------------------------------------------------------
264 
265     lpsrBookBlock (
266       int inputLineNumber);
267 
268     virtual ~lpsrBookBlock ();
269 
270   public:
271 
272     // set and get
273     // ------------------------------------------------------
274 
setBookBlockHeader(S_lpsrHeader bookBlockHeader)275     void                  setBookBlockHeader (
276                             S_lpsrHeader bookBlockHeader)
277                               { fBookBlockHeader = bookBlockHeader; }
278 
getBookBlockHeader()279     S_lpsrHeader          getBookBlockHeader () const
280                               { return fBookBlockHeader; }
281 
setBookBlockPaper(S_lpsrPaper bookBlockPaper)282     void                  setBookBlockPaper (
283                             S_lpsrPaper bookBlockPaper)
284                               { fBookBlockPaper = bookBlockPaper; }
285 
getBookBlockPaper()286     S_lpsrPaper           getBookBlockPaper () const
287                               { return fBookBlockPaper; }
288 
289     const list<S_lpsrBookBlockElement>&
getBookBlockElementsList()290                           getBookBlockElementsList () const
291                               { return fBookBlockElementsList; }
292 
293   public:
294 
295     // public services
296     // ------------------------------------------------------
297 
298     void                  appendLpsrScoreBlockToBookBlockElementsList (
299                             S_lpsrScoreBlock scoreBlock);
300 
301     void                  appendLpsrBookPartBlockToBookBlockElementsList (
302                             S_lpsrBookPartBlock bookPartBlock);
303 
304   protected:
305 
306     // protected services
307     // ------------------------------------------------------
308 
309     void                  appendBookBlockElementToBookBlockElementsList (
310                             S_lpsrBookBlockElement bookBlockElement);
311 
312   public:
313 
314     // visitors
315     // ------------------------------------------------------
316 
317     virtual void          acceptIn  (basevisitor* v);
318     virtual void          acceptOut (basevisitor* v);
319 
320     virtual void          browseData (basevisitor* v);
321 
322   public:
323 
324     // print
325     // ------------------------------------------------------
326 
327     virtual void          print (ostream& os) const;
328 
329   private:
330 
331     // fields
332     // ------------------------------------------------------
333 
334     S_lpsrHeader          fBookBlockHeader;
335 
336     S_lpsrPaper           fBookBlockPaper;
337 
338     list<S_lpsrBookBlockElement>
339                           fBookBlockElementsList;
340 };
341 typedef SMARTP<lpsrBookBlock> S_lpsrBookBlock;
342 EXP ostream& operator<< (ostream& os, const S_lpsrBookBlock& elt);
343 
344 
345 }
346 
347 
348 #endif
349