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

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