LibMusicXML 3.22
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
20namespace MusicXML2
21{
22
27
28//______________________________________________________________________________
32class EXP unrolled_clonevisitor : public clonevisitor,
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
73
74} // namespace MusicXML2
75
76
77#endif
Definition visitor.h:27