Initial
This commit is contained in:
78
music/parser.hpp
Normal file
78
music/parser.hpp
Normal file
@@ -0,0 +1,78 @@
|
||||
#ifndef _MUSIC_PARSER_HPP_
|
||||
#define _MUSIC_PARSER_HPP_
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _MUSIC_NOTE_HPP_
|
||||
#include <music/note.hpp>
|
||||
#endif
|
||||
#ifndef _MUSIC_CHORD_HPP_
|
||||
#include <music/chord.hpp>
|
||||
#endif
|
||||
#ifndef _MUSIC_EMITTER_HPP_
|
||||
#include <music/emitter.hpp>
|
||||
#endif
|
||||
#ifndef _MUSIC_SCANSYMBOLS_HPP_
|
||||
#include <music/scansymbols.hpp>
|
||||
#endif
|
||||
|
||||
namespace Music
|
||||
{
|
||||
|
||||
class Parser
|
||||
{
|
||||
public:
|
||||
Parser();
|
||||
virtual ~Parser();
|
||||
bool parse(Emitter &input,Music::Chord &chord);
|
||||
private:
|
||||
bool nextSymbol();
|
||||
ScanSymbols::ScanSymbol peekSymbol(void);
|
||||
void insertSymbols(ScanSymbols::ScanSymbol symbol);
|
||||
void insertSymbols(Block<Byte> &symbols);
|
||||
void removeSymbols(ScanSymbols::ScanSymbol symbol);
|
||||
void removeSymbols(Block<Byte> &symbols);
|
||||
bool symbolIn(Block<Byte> &symbols);
|
||||
bool symbolIn(Byte &symbol);
|
||||
bool symbolIn(ScanSymbols::ScanSymbol symbol);
|
||||
bool checkSymbol(void);
|
||||
bool expect(ScanSymbols::ScanSymbol symbol);
|
||||
bool parseNote(void);
|
||||
bool parseDegree(void);
|
||||
bool parseAlteration(void);
|
||||
bool parseMinor(void);
|
||||
bool parseVerb(void);
|
||||
bool parseMajorSeventh(void);
|
||||
bool parseHalfDiminished(void);
|
||||
bool parseDiminished(void);
|
||||
bool parseMinorMajor(void);
|
||||
bool haveNote(const Note ¬e);
|
||||
bool isMinor(void)const;
|
||||
|
||||
Block<Byte> mNoteSymbols;
|
||||
Block<Byte> mSharpFlatSymbols;
|
||||
Block<Byte> mSymbols;
|
||||
SmartPointer<Emitter> mEmitter;
|
||||
ScanSymbols::ScanSymbol mKey;
|
||||
Byte mByteValue;
|
||||
String mStrValue;
|
||||
Note mRootNote;
|
||||
Notes mNotes;
|
||||
int mIndex;
|
||||
bool mIsInError;
|
||||
};
|
||||
|
||||
inline
|
||||
Parser::Parser()
|
||||
{
|
||||
mNoteSymbols.insert(&Byte(ScanSymbols::Note1));
|
||||
mSharpFlatSymbols.insert(&Byte(ScanSymbols::Sharp1));
|
||||
mSharpFlatSymbols.insert(&Byte(ScanSymbols::Flat1));
|
||||
}
|
||||
|
||||
inline
|
||||
Parser::~Parser()
|
||||
{
|
||||
}
|
||||
};
|
||||
#endif
|
||||
Reference in New Issue
Block a user