#ifndef _GUITAR_NOTETYPE_HPP_ #define _GUITAR_NOTETYPE_HPP_ #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_ARRAY_HPP_ #include #endif class NoteType { public: enum TypeNote{WholeNote=1,HalfNote=2,QuarterNote=4,EighthNote=8, SixteenthNote=16,ThirtySecondNote=32,SixtyFourthNote=64}; NoteType(TypeNote noteType=QuarterNote); virtual ~NoteType(); const NoteType &operator++(void); NoteType operator++(int postfix); const NoteType &operator--(void); NoteType operator--(int postfix); TypeNote getNoteType(void)const; int toInt(void)const; NoteType &fromInt(int noteType); NoteType &fromString(const String &stringRep); void setNoteType(TypeNote noteType); String toString(void)const; static Array enumerate(void); static String toString(TypeNote noteType); private: int mNoteType; }; inline NoteType::NoteType(TypeNote noteType) : mNoteType(noteType) { } inline NoteType::~NoteType() { } inline NoteType NoteType::operator++(int postfix) { NoteType noteType(*this); operator++(); return noteType; } inline NoteType NoteType::operator--(int postfix) { NoteType noteType(*this); operator--(); return noteType; } inline int NoteType::toInt(void)const { return (int)mNoteType; } inline NoteType &NoteType::fromInt(int noteType) { mNoteType=(TypeNote)noteType; return *this; } inline NoteType::TypeNote NoteType::getNoteType(void)const { return (TypeNote)mNoteType; } inline void NoteType::setNoteType(TypeNote noteType) { mNoteType=noteType; } #endif