Initial
This commit is contained in:
286
image/DIRENTRY.HPP
Normal file
286
image/DIRENTRY.HPP
Normal file
@@ -0,0 +1,286 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user