287 lines
7.4 KiB
C++
287 lines
7.4 KiB
C++
#ifndef _IMAGE_IMAGERESOURCEDIRECTORYENTRY_HPP_
|
|
#define _IMAGE_IMAGERESOURCEDIRECTORYENTRY_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _IMAGE_IMAGERESOURCEDATAENTRY_HPP_
|
|
#include <image/dtaentry.hpp>
|
|
#endif
|
|
#ifndef _IMAGE_IMAGERESOURCEDIRECTORY_HPP_
|
|
#include <image/imresdir.hpp>
|
|
#endif
|
|
#ifndef _IMAGE_STRPOINTER_HPP_
|
|
#include <image/strptr.hpp>
|
|
#endif
|
|
|
|
template <class T>
|
|
class SmartPointer;
|
|
template <class T>
|
|
class Block;
|
|
class PureViewOfFile;
|
|
|
|
class ImageResourceDirectoryEntry : public IMAGE_RESOURCE_DIRECTORY_ENTRY
|
|
{
|
|
public:
|
|
ImageResourceDirectoryEntry(void);
|
|
ImageResourceDirectoryEntry(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry);
|
|
virtual ~ImageResourceDirectoryEntry();
|
|
ImageResourceDirectoryEntry &operator=(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry);
|
|
WORD operator==(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry)const;
|
|
operator IMAGE_RESOURCE_DIRECTORY_ENTRY &(void);
|
|
operator String(void);
|
|
const String &resName(void)const;
|
|
DWORD offsetName(void)const;
|
|
void offsetName(DWORD offsetName);
|
|
DWORD nameIsString(void)const;
|
|
void nameIsString(DWORD nameIsString);
|
|
DWORD name(void)const;
|
|
void name(DWORD name);
|
|
DWORD resID(void)const;
|
|
void resID(DWORD resID);
|
|
DWORD offsetData(void)const;
|
|
void offsetData(DWORD offsetData);
|
|
DWORD offsetDirectory(void)const;
|
|
void offsetDirectory(DWORD offsetDirectory);
|
|
DWORD dataIsDirectory(void)const;
|
|
void dataIsDirectory(DWORD dataIsDirectory);
|
|
void read(DWORD resBase,DWORD deltaOffset,PureViewOfFile &pureView);
|
|
ImageResourceDirectory &imageResourceDirectory(void);
|
|
ImageResourceDataEntry &imageResourceDataEntry(void);
|
|
private:
|
|
void createResStrings(void);
|
|
String getResource(DWORD resIndex);
|
|
void setZero(void);
|
|
|
|
String mResourceName;
|
|
Block<StrPointer> mResStrings;
|
|
ImageResourceDirectory mImageResourceDirectory;
|
|
ImageResourceDataEntry mImageResourceDataEntry;
|
|
};
|
|
|
|
inline
|
|
ImageResourceDirectoryEntry::ImageResourceDirectoryEntry(void)
|
|
{
|
|
setZero();
|
|
createResStrings();
|
|
}
|
|
|
|
inline
|
|
ImageResourceDirectoryEntry::ImageResourceDirectoryEntry(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry)
|
|
{
|
|
createResStrings();
|
|
*this=someImageResourceDirectoryEntry;
|
|
}
|
|
|
|
inline
|
|
ImageResourceDirectoryEntry::~ImageResourceDirectoryEntry()
|
|
{
|
|
}
|
|
|
|
inline
|
|
ImageResourceDirectoryEntry &ImageResourceDirectoryEntry::operator=(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry)
|
|
{
|
|
mResourceName=someImageResourceDirectoryEntry.mResourceName;
|
|
offsetName(someImageResourceDirectoryEntry.offsetName());
|
|
nameIsString(someImageResourceDirectoryEntry.nameIsString());
|
|
name(someImageResourceDirectoryEntry.name());
|
|
resID(someImageResourceDirectoryEntry.resID());
|
|
offsetData(someImageResourceDirectoryEntry.offsetData());
|
|
offsetDirectory(someImageResourceDirectoryEntry.offsetDirectory());
|
|
dataIsDirectory(someImageResourceDirectoryEntry.dataIsDirectory());
|
|
mImageResourceDirectory=someImageResourceDirectoryEntry.mImageResourceDirectory;
|
|
mImageResourceDataEntry=someImageResourceDirectoryEntry.mImageResourceDataEntry;
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
WORD ImageResourceDirectoryEntry::operator==(const ImageResourceDirectoryEntry &someImageResourceDirectoryEntry)const
|
|
{
|
|
return (offsetName()==someImageResourceDirectoryEntry.offsetName()&&
|
|
nameIsString()==someImageResourceDirectoryEntry.nameIsString()&&
|
|
name()==someImageResourceDirectoryEntry.name()&&
|
|
resID()==someImageResourceDirectoryEntry.resID()&&
|
|
offsetData()==someImageResourceDirectoryEntry.offsetData()&&
|
|
offsetDirectory()==someImageResourceDirectoryEntry.offsetDirectory()&&
|
|
dataIsDirectory()==someImageResourceDirectoryEntry.dataIsDirectory());
|
|
}
|
|
|
|
inline
|
|
ImageResourceDirectoryEntry::operator IMAGE_RESOURCE_DIRECTORY_ENTRY &(void)
|
|
{
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::offsetName(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u.s.NameOffset;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::NameOffset;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::offsetName(DWORD offsetName)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u.s.NameOffset=offsetName;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::NameOffset=offsetName;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::nameIsString(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u.s.NameIsString;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::NameIsString;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::nameIsString(DWORD nameIsString)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u.s.NameIsString=nameIsString;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::NameIsString=nameIsString;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::name(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u.Name;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::Name;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::name(DWORD name)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u.Name=name;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::Name=name;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::resID(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u.Id;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::Id;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::resID(DWORD resID)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u.Id=resID;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::Id=resID;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::offsetData(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.OffsetToData;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::OffsetToData;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::offsetData(DWORD offsetData)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.OffsetToData=offsetData;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::OffsetToData=offsetData;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::offsetDirectory(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.s.OffsetToDirectory;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::OffsetToDirectory;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::offsetDirectory(DWORD offsetDirectory)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.s.OffsetToDirectory=offsetDirectory;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::OffsetToDirectory=offsetDirectory;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
DWORD ImageResourceDirectoryEntry::dataIsDirectory(void)const
|
|
{
|
|
#ifndef _MSC_VER
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.s.DataIsDirectory;
|
|
#else
|
|
return IMAGE_RESOURCE_DIRECTORY_ENTRY::DataIsDirectory;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::dataIsDirectory(DWORD dataIsDirectory)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.s.DataIsDirectory=dataIsDirectory;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::DataIsDirectory=dataIsDirectory;
|
|
#endif
|
|
}
|
|
|
|
inline
|
|
const String &ImageResourceDirectoryEntry::resName(void)const
|
|
{
|
|
return mResourceName;
|
|
}
|
|
|
|
inline
|
|
ImageResourceDirectory &ImageResourceDirectoryEntry::imageResourceDirectory(void)
|
|
{
|
|
return mImageResourceDirectory;
|
|
}
|
|
|
|
inline
|
|
ImageResourceDataEntry &ImageResourceDirectoryEntry::imageResourceDataEntry(void)
|
|
{
|
|
return mImageResourceDataEntry;
|
|
}
|
|
|
|
inline
|
|
void ImageResourceDirectoryEntry::setZero(void)
|
|
{
|
|
#ifndef _MSC_VER
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u.Name=0;
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::u2.OffsetToData=0;
|
|
#else
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::Name=0;
|
|
IMAGE_RESOURCE_DIRECTORY_ENTRY::OffsetToData=0;
|
|
#endif
|
|
}
|
|
#endif
|