Files
Work/as68hc11/backup/Symbol.hpp
2024-08-07 09:12:07 -04:00

129 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,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