LibMusicXML 3.22
metronomevisitor.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 __metronomevisitor__
14#define __metronomevisitor__
15
16#include <vector>
17#include <utility>
18#include "typedefs.h"
19#include "visitor.h"
20
21namespace MusicXML2
22{
23
28
32class EXP metronomevisitor :
33 public visitor<S_metronome>,
34 public visitor<S_beat_unit>,
35 public visitor<S_beat_unit_dot>,
36 public visitor<S_per_minute>
37{
38 protected:
39 typedef struct { std::string fUnit; int fDots; } beat;
40 beat fCurrentBeat;
41
42 void reset();
43 virtual void reset(beat& b);
44 virtual void visitStart( S_metronome& elt );
45 virtual void visitEnd ( S_metronome& elt );
46 virtual void visitStart( S_beat_unit& elt );
47 virtual void visitStart( S_beat_unit_dot& elt );
48 virtual void visitStart( S_per_minute& elt );
49
50 public:
51 metronomevisitor() { reset(); }
52 virtual ~metronomevisitor() {}
53
54 std::vector<beat> fBeats;
55 int fPerMinute;
56};
57
58
60
61}
62
63#endif
key element data
Definition metronomevisitor.h:37
Definition visitor.h:27
Definition metronomevisitor.h:39