LibMusicXML  3.18
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 
21 namespace MusicXML2
22 {
23 
32 class 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 
61 }
62 
63 #endif
the smart pointer implementation
Definition: smartpointer.h:58
key element data
Definition: metronomevisitor.h:37
Definition: visitor.h:27
Definition: metronomevisitor.h:39