#ifndef _GUITAR_TABENTRY_HPP_ #define _GUITAR_TABENTRY_HPP_ #ifndef _COMMON_BLOCK_HPP_ #include #endif #ifndef _GUITAR_FRETTEDNOTE_HPP_ #include #endif #ifndef _GUITAR_NOTETYPE_HPP_ #include #endif #ifndef _GUITAR_TIMING_HPP_ #include #endif #ifndef _MUSIC_CHORD_HPP_ #include #endif class MIDIOutputDevice; class TabEntry; typedef Block TabEntries; class TabEntry : public Block { public: TabEntry(); TabEntry(const TabEntry &entry); virtual ~TabEntry(); bool play(MIDIOutputDevice &midiDevice,bool useDelay=true)const; bool operator==(const TabEntry &entry)const; TabEntry &operator=(const TabEntry &entry); const NoteType &getNoteType(void)const; void setNoteType(const NoteType ¬eType); String toString(void)const; bool fromString(String strText); bool fromChord(const Music::Chord &chord); bool contains(int string,int &entryIndex); bool contains(int string); bool remove(int string,int fret); void remove(void); bool addFrettedNote(int string,const FrettedNote &frettedNote); bool setFrettedNote(int string,const FrettedNote &frettedNote); const String &getComment(void)const; void setComment(const String &comment); bool hasSeparator(void)const; void hasSeparator(bool hasSeparator); private: void delay(void)const; NoteType mNoteType; String mComment; bool mHasSeparator; }; inline TabEntry::TabEntry() : mHasSeparator(false) { } inline TabEntry::~TabEntry() { } inline const NoteType &TabEntry::getNoteType(void)const { return mNoteType; } inline void TabEntry::setNoteType(const NoteType ¬eType) { mNoteType=noteType; } inline void TabEntry::remove(void) { Block::remove(); } inline const String &TabEntry::getComment(void)const { return mComment; } inline void TabEntry::setComment(const String &comment) { mComment=comment; } inline bool TabEntry::hasSeparator(void)const { return mHasSeparator; } inline void TabEntry::hasSeparator(bool hasSeparator) { mHasSeparator=hasSeparator; } #endif