161 lines
2.9 KiB
C++
161 lines
2.9 KiB
C++
#ifndef _AS68HC11_FIXUP_HPP_
|
|
#define _AS68HC11_FIXUP_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _AS68HC11_LABEL_HPP_
|
|
#include <as68hc11/label.hpp>
|
|
#endif
|
|
|
|
class Fixup
|
|
{
|
|
public:
|
|
enum Kind{Label,Equate};
|
|
enum BitCount{Bit16,Bit8};
|
|
enum AddressMode{Relative,Absolute};
|
|
Fixup(void);
|
|
Fixup(const Fixup &someFixup);
|
|
Fixup(const String &strLabel,DWORD offset,DWORD position,Kind kind,BitCount bitCount=Bit8,AddressMode addressMode=Relative);
|
|
virtual ~Fixup();
|
|
Fixup &operator=(const Fixup &someFixup);
|
|
BOOL operator==(const Fixup &someFixup)const;
|
|
DWORD offset(void)const;
|
|
void offset(DWORD offset);
|
|
DWORD position(void)const;
|
|
void position(DWORD position);
|
|
const String &strLabel(void)const;
|
|
void strLabel(const String &strLabel);
|
|
Kind kind(void)const;
|
|
void kind(Kind kind);
|
|
BitCount bitCount(void)const;
|
|
void bitCount(BitCount bitCount);
|
|
AddressMode addressMode(void)const;
|
|
void addressMode(AddressMode addressMode);
|
|
private:
|
|
String mStrLabel;
|
|
DWORD mOffset;
|
|
DWORD mPosition;
|
|
Kind mKind;
|
|
BitCount mBitCount;
|
|
AddressMode mAddressMode;
|
|
};
|
|
|
|
inline
|
|
Fixup::Fixup(void)
|
|
: mOffset(0), mPosition(0), mKind(Label), mBitCount(Bit8), mAddressMode(Relative)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Fixup::Fixup(const String &strLabel,DWORD offset,DWORD position,Kind kind,BitCount bitCount,AddressMode addressMode)
|
|
: mStrLabel(strLabel), mOffset(offset), mKind(kind), mBitCount(bitCount), mAddressMode(addressMode),
|
|
mPosition(position)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Fixup::Fixup(const Fixup &someFixup)
|
|
{
|
|
*this=someFixup;
|
|
}
|
|
|
|
inline
|
|
Fixup::~Fixup()
|
|
{
|
|
}
|
|
|
|
inline
|
|
Fixup &Fixup::operator=(const Fixup &someFixup)
|
|
{
|
|
strLabel(someFixup.strLabel());
|
|
offset(someFixup.offset());
|
|
position(someFixup.position());
|
|
strLabel(someFixup.strLabel());
|
|
bitCount(someFixup.bitCount());
|
|
addressMode(someFixup.addressMode());
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
BOOL Fixup::operator==(const Fixup &someFixup)const
|
|
{
|
|
return (strLabel()==someFixup.strLabel()&&
|
|
offset()==someFixup.offset()&&
|
|
position()==someFixup.position()&&
|
|
strLabel()==someFixup.strLabel()&&
|
|
bitCount()==someFixup.bitCount()&&
|
|
addressMode()==someFixup.addressMode());
|
|
}
|
|
|
|
inline
|
|
DWORD Fixup::offset(void)const
|
|
{
|
|
return mOffset;
|
|
}
|
|
|
|
inline
|
|
void Fixup::offset(DWORD offset)
|
|
{
|
|
mOffset=offset;
|
|
}
|
|
|
|
inline
|
|
DWORD Fixup::position(void)const
|
|
{
|
|
return mPosition;
|
|
}
|
|
|
|
inline
|
|
void Fixup::position(DWORD position)
|
|
{
|
|
mPosition=position;
|
|
}
|
|
|
|
inline
|
|
Fixup::Kind Fixup::kind(void)const
|
|
{
|
|
return mKind;
|
|
}
|
|
|
|
inline
|
|
const String &Fixup::strLabel(void)const
|
|
{
|
|
return mStrLabel;
|
|
}
|
|
|
|
inline
|
|
void Fixup::strLabel(const String &strLabel)
|
|
{
|
|
mStrLabel=strLabel;
|
|
}
|
|
|
|
inline
|
|
void Fixup::kind(Kind kind)
|
|
{
|
|
mKind=kind;
|
|
}
|
|
|
|
inline
|
|
Fixup::BitCount Fixup::bitCount(void)const
|
|
{
|
|
return mBitCount;
|
|
}
|
|
|
|
inline
|
|
void Fixup::bitCount(BitCount bitCount)
|
|
{
|
|
mBitCount=bitCount;
|
|
}
|
|
|
|
inline
|
|
Fixup::AddressMode Fixup::addressMode(void)const
|
|
{
|
|
return mAddressMode;
|
|
}
|
|
|
|
inline
|
|
void Fixup::addressMode(AddressMode addressMode)
|
|
{
|
|
mAddressMode=addressMode;
|
|
}
|
|
#endif |