Files
Work/image/IMRESDIR.BAK
2024-08-07 09:16:27 -04:00

188 lines
5.0 KiB
Plaintext

#ifndef _IMAGE_IMAGERESOURCEDIRECTORY_HPP_
#define _IMAGE_IMAGERESOURCEDIRECTORY_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_BLOCK_HPP_
#include <common/block.hpp>
#endif
class ImageResourceDirectory;
class ImageResourceDirectoryEntry;
class PureViewOfFile;
class ImageResourceDirectory : private IMAGE_RESOURCE_DIRECTORY
{
public:
typedef Block<ImageResourceDirectoryEntry> ImageResourceDirectoryEntries;
ImageResourceDirectory(void);
ImageResourceDirectory(const ImageResourceDirectory &someImageResourceDirectory);
virtual ~ImageResourceDirectory();
ImageResourceDirectory &operator=(const ImageResourceDirectory &someImageResourceDirectory);
ImageResourceDirectoryEntry &operator[](UINT itemIndex);
WORD operator==(const ImageResourceDirectory &someImageResourceDirectory)const;
operator IMAGE_RESOURCE_DIRECTORY &(void);
DWORD characteristics(void)const;
void characteristics(DWORD characteristics);
DWORD timeDate(void)const;
void timeDate(DWORD timeDate);
WORD majorVersion(void)const;
void majorVersion(WORD majorVersion);
WORD minorVersion(void)const;
void minorVersion(WORD minorVersion);
WORD entriesByName(void)const;
void entriesByName(WORD entriesByName);
WORD entriesByID(void)const;
void entriesByID(WORD entriesByID);
WORD entries(void)const;
void read(DWORD resBase,DWORD deltaOffset,PureViewOfFile &pureView);
void clear(void);
private:
void zeroInit(void);
ImageResourceDirectoryEntries mImageResourceDirectoryEntries;
};
inline
ImageResourceDirectory::ImageResourceDirectory(void)
{
zeroInit();
}
inline
ImageResourceDirectory::ImageResourceDirectory(const ImageResourceDirectory &someImageResourceDirectory)
{
*this=someImageResourceDirectory;
}
inline
ImageResourceDirectory::~ImageResourceDirectory()
{
}
inline
ImageResourceDirectory &ImageResourceDirectory::operator=(const ImageResourceDirectory &someImageResourceDirectory)
{
characteristics(someImageResourceDirectory.characteristics());
timeDate(someImageResourceDirectory.timeDate());
majorVersion(someImageResourceDirectory.majorVersion());
minorVersion(someImageResourceDirectory.minorVersion());
entriesByName(someImageResourceDirectory.entriesByName());
entriesByID(someImageResourceDirectory.entriesByID());
mImageResourceDirectoryEntries=someImageResourceDirectory.mImageResourceDirectoryEntries;
return *this;
}
inline
WORD ImageResourceDirectory::operator==(const ImageResourceDirectory &someImageResourceDirectory)const
{
return (characteristics()==someImageResourceDirectory.characteristics()&&
timeDate()==someImageResourceDirectory.timeDate()&&
majorVersion()==someImageResourceDirectory.majorVersion()&&
minorVersion()==someImageResourceDirectory.minorVersion()&&
entriesByName()==someImageResourceDirectory.entriesByName()&&
entriesByID()==someImageResourceDirectory.entriesByID()&&
mImageResourceDirectoryEntries==someImageResourceDirectory.mImageResourceDirectoryEntries);
}
inline
ImageResourceDirectory::operator IMAGE_RESOURCE_DIRECTORY &(void)
{
return *this;
}
inline
DWORD ImageResourceDirectory::characteristics(void)const
{
return IMAGE_RESOURCE_DIRECTORY::Characteristics;
}
inline
void ImageResourceDirectory::characteristics(DWORD characteristics)
{
IMAGE_RESOURCE_DIRECTORY::Characteristics=characteristics;
}
inline
DWORD ImageResourceDirectory::timeDate(void)const
{
return IMAGE_RESOURCE_DIRECTORY::TimeDateStamp;
}
inline
void ImageResourceDirectory::timeDate(DWORD timeDate)
{
IMAGE_RESOURCE_DIRECTORY::TimeDateStamp=timeDate;
}
inline
WORD ImageResourceDirectory::majorVersion(void)const
{
return IMAGE_RESOURCE_DIRECTORY::MajorVersion;
}
inline
void ImageResourceDirectory::majorVersion(WORD majorVersion)
{
IMAGE_RESOURCE_DIRECTORY::MajorVersion=majorVersion;
}
inline
WORD ImageResourceDirectory::minorVersion(void)const
{
return IMAGE_RESOURCE_DIRECTORY::MinorVersion;
}
inline
void ImageResourceDirectory::minorVersion(WORD minorVersion)
{
IMAGE_RESOURCE_DIRECTORY::MinorVersion=minorVersion;
}
inline
WORD ImageResourceDirectory::entries(void)const
{
return entriesByName()+entriesByID();
}
inline
WORD ImageResourceDirectory::entriesByName(void)const
{
return IMAGE_RESOURCE_DIRECTORY::NumberOfNamedEntries;
}
inline
void ImageResourceDirectory::entriesByName(WORD entriesByName)
{
IMAGE_RESOURCE_DIRECTORY::NumberOfNamedEntries=entriesByName;
}
inline
WORD ImageResourceDirectory::entriesByID(void)const
{
return IMAGE_RESOURCE_DIRECTORY::NumberOfIdEntries;
}
inline
void ImageResourceDirectory::entriesByID(WORD entriesByID)
{
IMAGE_RESOURCE_DIRECTORY::NumberOfIdEntries=entriesByID;
}
inline
void ImageResourceDirectory::zeroInit(void)
{
IMAGE_RESOURCE_DIRECTORY::Characteristics=0;
IMAGE_RESOURCE_DIRECTORY::TimeDateStamp=0;
IMAGE_RESOURCE_DIRECTORY::MajorVersion=0;
IMAGE_RESOURCE_DIRECTORY::MinorVersion=0;
IMAGE_RESOURCE_DIRECTORY::NumberOfNamedEntries=0;
IMAGE_RESOURCE_DIRECTORY::NumberOfIdEntries=0;
}
inline
void ImageResourceDirectory::clear(void)
{
zeroInit();
mImageResourceDirectoryEntries.remove();
}
#endif