Main Page | Modules | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | Related Pages

TKey.h

00001 /*
00002 
00003   MusicXML Library
00004   Copyright (C) 2003  Grame
00005 
00006   This library is free software; you can redistribute it and/or
00007   modify it under the terms of the GNU Lesser General Public
00008   License as published by the Free Software Foundation; either
00009   version 2.1 of the License, or (at your option) any later version.
00010 
00011   This library is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014   Lesser General Public License for more details.
00015 
00016   You should have received a copy of the GNU Lesser General Public
00017   License along with this library; if not, write to the Free Software
00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020   Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France
00021   grame@grame.fr
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 } // namespace MusicXML
00108 
00109 
00110 #endif

Generated on Tue Mar 23 09:49:43 2004 for LibMusicXML by doxygen 1.3.3