130 lines
2.6 KiB
C++
130 lines
2.6 KiB
C++
#ifndef _AS68HC11_SYMBOL_HPP_
|
|
#define _AS68HC11_SYMBOL_HPP_
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _AS68HC11_INSTRUCTION_HPP_
|
|
#include <as68hc11/instrctn.hpp>
|
|
#endif
|
|
|
|
class Symbol : public Instruction
|
|
{
|
|
public:
|
|
enum SymbolType{ConstantSymbol,KeywordSymbol,RegisterSymbol,DirectiveSymbol,UserSymbol,
|
|
PreprocessorSymbol,UnknownSymbol};
|
|
Symbol(void);
|
|
Symbol(const Symbol &someSymbol);
|
|
Symbol(const String &symbolString,int identifier=0,SymbolType symbolType=UnknownSymbol,const Instruction &instruction=Instruction());
|
|
virtual ~Symbol();
|
|
Symbol &operator=(const Symbol &someSymbol);
|
|
BOOL operator==(const Symbol &someSymbol)const;
|
|
BOOL operator==(const String &symbolString)const;
|
|
BOOL operator<(const Symbol &someSymbol)const;
|
|
BOOL operator>(const Symbol &someSymbol)const;
|
|
operator String(void);
|
|
const String &symbolName(void)const;
|
|
void symbolName(const String &symbolName);
|
|
int identifier(void)const;
|
|
void identifier(int identifier);
|
|
SymbolType symbolType(void)const;
|
|
void symbolType(SymbolType symbolType);
|
|
private:
|
|
String mSymbolName;
|
|
int mIdentifier;
|
|
SymbolType mSymbolType;
|
|
};
|
|
|
|
inline
|
|
Symbol::Symbol(void)
|
|
: mIdentifier(0), mSymbolType(UnknownSymbol)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Symbol::Symbol(const Symbol &someSymbol)
|
|
{
|
|
*this=someSymbol;
|
|
}
|
|
|
|
inline
|
|
Symbol::Symbol(const String &symbolString,int identifier,SymbolType symbolType,const Instruction &instruction)
|
|
: mSymbolName(symbolString), mSymbolType(symbolType), mIdentifier(identifier), Instruction(instruction)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Symbol::~Symbol()
|
|
{
|
|
}
|
|
|
|
inline
|
|
BOOL Symbol::operator==(const Symbol &someSymbol)const
|
|
{
|
|
return mSymbolName==someSymbol.mSymbolName;
|
|
}
|
|
|
|
inline
|
|
BOOL Symbol::operator==(const String &symbolName)const
|
|
{
|
|
return mSymbolName==symbolName;
|
|
}
|
|
|
|
inline
|
|
BOOL Symbol::operator<(const Symbol &someSymbol)const
|
|
{
|
|
return mSymbolName<someSymbol.mSymbolName;
|
|
}
|
|
|
|
inline
|
|
BOOL Symbol::operator>(const Symbol &someSymbol)const
|
|
{
|
|
return mSymbolName>someSymbol.mSymbolName;
|
|
}
|
|
|
|
inline
|
|
Symbol &Symbol::operator=(const Symbol &someSymbol)
|
|
{
|
|
symbolName(someSymbol.symbolName());
|
|
identifier(someSymbol.identifier());
|
|
symbolType(someSymbol.symbolType());
|
|
(Instruction&)*this=(Instruction&)someSymbol;
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
const String &Symbol::symbolName(void)const
|
|
{
|
|
return mSymbolName;
|
|
}
|
|
|
|
inline
|
|
void Symbol::symbolName(const String &symbolName)
|
|
{
|
|
mSymbolName=symbolName;
|
|
}
|
|
|
|
inline
|
|
Symbol::SymbolType Symbol::symbolType(void)const
|
|
{
|
|
return mSymbolType;
|
|
}
|
|
|
|
inline
|
|
void Symbol::symbolType(SymbolType symbolType)
|
|
{
|
|
mSymbolType=symbolType;
|
|
}
|
|
|
|
inline
|
|
int Symbol::identifier(void)const
|
|
{
|
|
return mIdentifier;
|
|
}
|
|
|
|
inline
|
|
void Symbol::identifier(int identifier)
|
|
{
|
|
mIdentifier=identifier;
|
|
}
|
|
#endif
|