LibMusicXML  3.18
unrolled_clonevisitor.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 __unrolled_clonevisitor__
14 #define __unrolled_clonevisitor__
15 
16 #include "visitor.h"
17 #include "clonevisitor.h"
18 #include "typedefs.h"
19 
20 namespace MusicXML2
21 {
22 
28 //______________________________________________________________________________
33  public visitor<S_measure>,
34  public visitor<S_key>,
35  public visitor<S_clef>,
36  public visitor<S_time>,
37  public visitor<S_ending>,
38  public visitor<S_repeat>,
39  public visitor<S_part>,
40  public visitor<S_sound>
41 {
42  S_key fCurrentKey; bool fKeyCopy;
43  S_clef fCurrentClef; bool fClefCopy;
44  S_time fCurrentTime; bool fTimeCopy;
45  long fMeasureNum;
46 
47  protected:
48  virtual void start (Sxmlelement elt) { clonevisitor::visitStart(elt); }
49  virtual void end (Sxmlelement elt) { clonevisitor::visitEnd(elt); }
50  public:
51  unrolled_clonevisitor() : fMeasureNum(1) {}
52  virtual ~unrolled_clonevisitor() {}
53 
54  virtual void visitStart( S_measure& elt);
55  virtual void visitStart( S_part& elt);
56  virtual void visitStart( S_sound& elt);
57  virtual void visitStart( S_key& elt);
58  virtual void visitStart( S_clef& elt);
59  virtual void visitStart( S_time& elt);
60 
61  virtual void visitEnd ( S_measure& elt) { end( elt ); }
62  virtual void visitEnd ( S_part& elt) { end( elt ); }
63  virtual void visitEnd ( S_sound& elt) { end( elt ); }
64  virtual void visitEnd ( S_key& elt);
65  virtual void visitEnd ( S_clef& elt);
66  virtual void visitEnd ( S_time& elt);
67 
68  virtual void visitStart( S_ending& elt) {} // don't copy
69  virtual void visitStart( S_repeat& elt) {} // don't copy
70 };
71 
74 } // namespace MusicXML2
75 
76 
77 #endif
A visitor that clones a musicxml tree.
Definition: clonevisitor.h:33
A visitor that creates an "unrolled" version of a score.
Definition: unrolled_clonevisitor.h:41
Definition: visitor.h:27