LibMusicXML
3.18
src
visitors
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
//______________________________________________________________________________
32
class
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
74
}
// namespace MusicXML2
75
76
77
#endif
MusicXML2::clonevisitor
A visitor that clones a musicxml tree.
Definition:
clonevisitor.h:33
MusicXML2::unrolled_clonevisitor
A visitor that creates an "unrolled" version of a score.
Definition:
unrolled_clonevisitor.h:41
MusicXML2::SMARTP< musicxml< k_key > >
MusicXML2::visitor
Definition:
visitor.h:27
Generated by
1.8.18