#ifndef _AS68HC11_ADDRESSMODE_HPP_ #define _AS68HC11_ADDRESSMODE_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif class AddressMode { public: enum Attribute{None=0x0000,Inherent=0x001,Immediate=0x0002,Direct=0x0004,Extended=0x0008,Indexed=0x0010,Relative=0x0020,Mask=0x0040,IndexedRelativeMask=Indexed|Relative|Mask,DirectRelativeMask=Direct|Relative|Mask,IndexedMask=Indexed|Mask,DirectMask=Direct|Mask}; AddressMode(void); AddressMode(const AddressMode &someAddressMode); AddressMode(Attribute attribute,BYTE opcode,BYTE prebyte=0x00); virtual ~AddressMode(); AddressMode &operator=(const AddressMode &someAddressMode); BOOL operator==(const AddressMode &someAddressMode)const; operator String(void); Attribute attribute(void)const; void attribute(Attribute attribute); BYTE opcode(void)const; void opcode(BYTE opcode); BYTE prebyte(void)const; void prebyte(BYTE prebyte); private: Attribute mAttribute; BYTE mOpCode; BYTE mPreByte; }; inline AddressMode::AddressMode(void) : mAttribute(None), mOpCode(0x00), mPreByte(0x00) { } inline AddressMode::AddressMode(const AddressMode &someAddressMode) { *this=someAddressMode; } inline AddressMode::AddressMode(Attribute attribute,BYTE opcode,BYTE prebyte) : mAttribute(attribute), mOpCode(opcode), mPreByte(prebyte) { } inline AddressMode::~AddressMode() { } inline AddressMode &AddressMode::operator=(const AddressMode &someAddressMode) { attribute(someAddressMode.attribute()); opcode(someAddressMode.opcode()); prebyte(someAddressMode.prebyte()); return *this; } inline BOOL AddressMode::operator==(const AddressMode &someAddressMode)const { return (attribute()==someAddressMode.attribute()&& opcode()==someAddressMode.opcode()&& prebyte()==someAddressMode.prebyte()); } inline AddressMode::Attribute AddressMode::attribute(void)const { return mAttribute; } inline void AddressMode::attribute(Attribute attribute) { mAttribute=attribute; } inline BYTE AddressMode::opcode(void)const { return mOpCode; } inline void AddressMode::opcode(BYTE opcode) { mOpCode=opcode; } inline BYTE AddressMode::prebyte(void)const { return mPreByte; } inline void AddressMode::prebyte(BYTE prebyte) { mPreByte=prebyte; } #endif