00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __TKey__
00026 #define __TKey__
00027
00028 #include "exports.h"
00029
00030 #include <string>
00031
00032 #include "bimap.h"
00033 #include "TScoreVisitor.h"
00034
00035 namespace MusicXML
00036 {
00037
00068 class EXP TKey : public visitable, public smartable {
00069
00070 public:
00071 enum { undefined=-1 };
00072 enum { major=1, minor, dorian, phrygian, lydian, mixolydian, aeolian,
00073 ionian, locrian, last=locrian };
00074
00075 EXP friend SMARTP<TKey> newKey();
00076
00077 void setCancel(long cancel);
00078 void setFifths(long fifths);
00079 void setMode(long mode);
00080
00081 long getCancel() const { return fCancel; }
00082 long getFifths() const { return fFifths; }
00083 long getMode() const { return fMode; }
00084
00085 virtual void accept(TScoreVisitor& visitor);
00086
00088 static const string xmlmode (int d);
00090 static int xmlmode (const string str);
00091
00092 protected:
00093 TKey() : fCancel(0), fFifths(0), fMode(undefined) {}
00094 virtual ~TKey() {}
00095
00096 private:
00097 long fCancel;
00098 long fFifths;
00099 long fMode;
00100
00101 static bimap<string, int> fMode2String;
00102 static int fModeTbl[];
00103 static string fModeStrings[];
00104 };
00105 typedef SMARTP<TKey> SKey;
00106
00107 }
00108
00109
00110 #endif