28#ifndef LLVM_OBJECT_WINDOWSRESOURCE_H
29#define LLVM_OBJECT_WINDOWSRESOURCE_H
99class ResourceEntryRef {
159 std::vector<std::string> &Duplicates);
161 std::vector<std::string> &Duplicates);
170 template <
typename T>
171 using Children = std::map<T, std::unique_ptr<TreeNode>>;
183 return StringChildren;
190 static std::unique_ptr<TreeNode> createStringNode(
uint32_t Index);
191 static std::unique_ptr<TreeNode> createIDNode();
193 static std::unique_ptr<TreeNode> createDataNode(
uint16_t MajorVersion,
199 explicit TreeNode(
uint32_t StringIndex);
204 std::vector<std::vector<uint8_t>> &Data,
205 std::vector<std::vector<UTF16>> &StringTable,
208 std::vector<std::vector<UTF16>> &StringTable);
210 std::vector<std::vector<UTF16>> &StringTable);
212 std::vector<std::vector<uint8_t>> &Data,
216 uint32_t DataIndex, TreeNode *&Result);
219 std::vector<std::vector<UTF16>> &StringTable);
220 void shiftDataIndexDown(
uint32_t Index);
222 bool IsDataNode =
false;
248 std::vector<StringOrID> &Context,
249 std::vector<std::string> &Duplicates);
251 bool shouldIgnoreDuplicate(
const std::vector<StringOrID> &Context)
const;
254 std::vector<std::vector<uint8_t>>
Data;
257 std::vector<std::string> InputFilenames;
264 const WindowsResourceParser &Parser,
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
An implementation of BinaryStream which holds its entire data set in a single contiguous buffer.
Provides read only access to a subclass of BinaryStream.
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
StringRef - Represent a constant reference to a string, i.e.
A table of densely packed, null-terminated strings indexed by offset.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Binary(unsigned int Type, MemoryBufferRef Source)
EmptyResError(Twine Msg, object_error ECOverride)
GenericBinaryError(const Twine &Msg)
uint16_t getDataVersion() const
friend class WindowsResource
uint16_t getMajorVersion() const
uint16_t getLanguage() const
LLVM_ABI Error moveNext(bool &End)
ArrayRef< UTF16 > getTypeString() const
uint16_t getNameID() const
uint16_t getTypeID() const
uint16_t getMemoryFlags() const
bool checkNameString() const
uint16_t getMinorVersion() const
uint32_t getCharacteristics() const
bool checkTypeString() const
ArrayRef< UTF16 > getNameString() const
ArrayRef< uint8_t > getData() const
const Children< std::string > & getStringChildren() const
uint16_t getMinorVersion() const
LLVM_ABI uint32_t getTreeSize() const
const Children< uint32_t > & getIDChildren() const
LLVM_ABI void print(ScopedPrinter &Writer, StringRef Name) const
std::map< T, std::unique_ptr< TreeNode > > Children
uint32_t getCharacteristics() const
uint32_t getDataIndex() const
uint32_t getStringIndex() const
friend class WindowsResourceParser
uint16_t getMajorVersion() const
bool checkIsDataNode() const
LLVM_ABI void cleanUpManifests(std::vector< std::string > &Duplicates)
const TreeNode & getTree() const
LLVM_ABI void printTree(raw_ostream &OS) const
ArrayRef< std::vector< uint8_t > > getData() const
LLVM_ABI WindowsResourceParser(bool MinGW=false)
ArrayRef< std::vector< UTF16 > > getStringTable() const
LLVM_ABI Error parse(WindowsResource *WR, std::vector< std::string > &Duplicates)
LLVM_ABI Expected< ResourceEntryRef > getHeadEntry()
static bool classof(const Binary *V)
friend class ResourceEntryRef
static LLVM_ABI Expected< std::unique_ptr< WindowsResource > > createWindowsResource(MemoryBufferRef Source)
This class implements an extremely fast bulk output stream that can only output to a stream.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
LLVM_ABI Expected< std::unique_ptr< MemoryBuffer > > writeWindowsResourceCOFF(llvm::COFF::MachineTypes MachineType, const WindowsResourceParser &Parser, uint32_t TimeDateStamp)
const size_t WIN_RES_NULL_ENTRY_SIZE
const uint32_t WIN_RES_DATA_ALIGNMENT
LLVM_ABI void printResourceTypeName(uint16_t TypeID, raw_ostream &OS)
const uint32_t WIN_RES_HEADER_ALIGNMENT
const size_t WIN_RES_MAGIC_SIZE
const uint16_t WIN_RES_PURE_MOVEABLE
detail::packed_endian_specific_integral< uint32_t, llvm::endianness::little, unaligned > ulittle32_t
detail::packed_endian_specific_integral< uint16_t, llvm::endianness::little, unaligned > ulittle16_t
This is an optimization pass for GlobalISel generic memory operations.
@ Ref
The access may reference the value stored in memory.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
support::ulittle16_t TypeID
support::ulittle16_t NameID
void setType(uint16_t ID)
void setName(uint16_t ID)
StringOrID(ArrayRef< UTF16 > String)