LibMusicXML  3.18
keyvisitor.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 __keyVisitor__
14 #define __keyVisitor__
15 
16 #include <ostream>
17 
18 #include "typedefs.h"
19 #include "visitor.h"
20 
21 namespace MusicXML2
22 {
23 
32 class EXP keyvisitor :
33  public visitor<S_key>,
34  public visitor<S_cancel>,
35  public visitor<S_fifths>,
36  public visitor<S_mode>,
37  public visitor<S_key_step>,
38  public visitor<S_key_alter>,
39  public visitor<S_key_octave>
40 {
41  protected:
42  void reset();
43  virtual void visitStart ( S_key& elt );
44  virtual void visitStart ( S_cancel& elt );
45  virtual void visitStart ( S_fifths& elt );
46  virtual void visitStart ( S_mode& elt );
47 
48  virtual void visitStart ( S_key_step& elt ) {} // not yet supported
49  virtual void visitStart ( S_key_alter& elt ) {} // not yet supported
50  virtual void visitStart ( S_key_octave& elt ) {} // not yet supported
51 
52  public:
53  keyvisitor() { reset(); }
54  virtual ~keyvisitor() {}
55 
56  virtual void print (std::ostream& out) const;
57 
58  int fFifths;
59  int fCancel;
60  std::string fMode;
61 };
62 
63 EXP std::ostream& operator<< (std::ostream& os, const keyvisitor& elt);
64 
65 
68 }
69 
70 #endif
key element data
Definition: keyvisitor.h:40
Definition: visitor.h:27