#ifndef _IMAGE_IMAGERESOURCEDIRECTORY_HPP_ #define _IMAGE_IMAGERESOURCEDIRECTORY_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif class ImageResourceDirectory; class ImageResourceDirectoryEntry; class PureViewOfFile; class ImageResourceDirectory : private IMAGE_RESOURCE_DIRECTORY { public: typedef Block 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