Files
Work/image/VXDOBJ.CPP
2024-08-07 09:16:27 -04:00

138 lines
3.6 KiB
C++

#include <image/vxdobj.hpp>
#include <common/pview.hpp>
VxDObject::VxDObject(void)
{
zeroInit();
}
VxDObject::VxDObject(const VxDObject &someVxDObject)
{
*this=someVxDObject;
}
VxDObject::~VxDObject()
{
}
VxDObject &VxDObject::operator=(const VxDObject &someVxDObject)
{
virtualSize(someVxDObject.virtualSize());
relocationBaseAddress(someVxDObject.relocationBaseAddress());
flags(someVxDObject.flags());
pageTableIndex(someVxDObject.pageTableIndex());
pageTableEntries(someVxDObject.pageTableEntries());
reserved(someVxDObject.reserved());
return *this;
}
BOOL VxDObject::operator<<(PureViewOfFile &pureView)
{
if(!pureView.read(mVirtualSize))return FALSE;
if(!pureView.read(mRelocationBaseAddress))return FALSE;
if(!pureView.read(mFlags))return FALSE;
if(!pureView.read(mPageTableIndex))return FALSE;
if(!pureView.read(mPageTableEntries))return FALSE;
if(!pureView.read(mReserved))return FALSE;
return TRUE;
}
VxDObject::operator String(void)const
{
String strFlags;
if(has(Readable))strFlags+="Readable";
if(has(Writeable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Writeable";}
if(has(Executable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Executable";}
if(has(Resource)){if(!strFlags.isNull())strFlags+=",";strFlags+="Resource";}
if(has(Discardable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Discardable";}
if(has(Shared)){if(!strFlags.isNull())strFlags+=",";strFlags+="Shared";}
if(has(HasPreloadPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasPreloadPages";}
if(has(HasInvalidPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasInvalidPages";}
if(has(HasZeroFilledPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasZeroFilledPages";}
if(has(IsResident)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResident";}
if(has(IsResidentAndContiguous)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResidentAndContiguous";}
if(has(IsResidentAndLongLockable)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResidentAndLongLockable";}
if(has(Reserved)){if(!strFlags.isNull())strFlags+=",";strFlags+="Reserved";}
if(has(Alias1616Required)){if(!strFlags.isNull())strFlags+=",";strFlags+="Alias1616Required";}
if(has(Big)){if(!strFlags.isNull())strFlags+=",";strFlags+="Big";}
if(has(IsCodeConforming)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsCodeConforming";}
if(has(IOPrivilegeLevel)){if(!strFlags.isNull())strFlags+=",";strFlags+="IOPrivilegeLevel";}
return strFlags;
}
DWORD VxDObject::virtualSize(void)const
{
return mVirtualSize;
}
void VxDObject::virtualSize(DWORD virtualSize)
{
mVirtualSize=virtualSize;
}
DWORD VxDObject::relocationBaseAddress(void)const
{
return mRelocationBaseAddress;
}
void VxDObject::relocationBaseAddress(DWORD relocationBaseAddress)
{
mRelocationBaseAddress=relocationBaseAddress;
}
DWORD VxDObject::flags(void)const
{
return mFlags;
}
void VxDObject::flags(DWORD flags)
{
mFlags=flags;
}
DWORD VxDObject::pageTableIndex(void)const
{
return mPageTableIndex;
}
void VxDObject::pageTableIndex(DWORD pageTableIndex)
{
mPageTableIndex=pageTableIndex;
}
DWORD VxDObject::pageTableEntries(void)const
{
return mPageTableEntries;
}
void VxDObject::pageTableEntries(DWORD pageTableEntries)
{
mPageTableEntries=pageTableEntries;
}
DWORD VxDObject::reserved(void)const
{
return mReserved;
}
void VxDObject::reserved(DWORD reserved)
{
mReserved=reserved;
}
BOOL VxDObject::has(Flags flagBit)const
{
return mFlags&(DWORD)flagBit;
}
void VxDObject::zeroInit(void)
{
mVirtualSize=0;
mRelocationBaseAddress=0;
mFlags=0;
mPageTableIndex=0;
mPageTableEntries=0;
mReserved=0;
}