retdec
metadata_stream.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_FILEFORMAT_TYPES_DOTNET_HEADERS_METADATA_STREAM_H
8 #define RETDEC_FILEFORMAT_TYPES_DOTNET_HEADERS_METADATA_STREAM_H
9 
10 #include <map>
11 #include <memory>
12 
13 #include "retdec/utils/container.h"
16 
17 namespace retdec {
18 namespace fileformat {
19 
20 class MetadataStream : public Stream
21 {
22  private:
23  using TypeToTableMap = std::map<MetadataTableType, std::unique_ptr<BaseMetadataTable>>;
24 
25  std::uint32_t majorVersion;
26  std::uint32_t minorVersion;
27  std::uint32_t stringStreamIndexSize;
28  std::uint32_t guidStreamIndexSize;
29  std::uint32_t blobStreamIndexSize;
31  public:
32  MetadataStream(std::uint64_t streamOffset, std::uint64_t streamSize);
33 
36  std::uint32_t getMajorVersion() const;
37  std::uint32_t getMinorVersion() const;
38  std::uint32_t getStringStreamIndexSize() const;
39  std::uint32_t getGuidStreamIndexSize() const;
40  std::uint32_t getBlobStreamIndexSize() const;
44 
47  void setMajorVersion(std::uint32_t streamMajorVersion);
48  void setMinorVersion(std::uint32_t streamMinorVersion);
49  void setStringStreamIndexSize(std::uint32_t indexSize);
50  void setGuidStreamIndexSize(std::uint32_t indexSize);
51  void setBlobStreamIndexSize(std::uint32_t indexSize);
53 
56  BaseMetadataTable* addMetadataTable(MetadataTableType tableType, std::uint32_t tableSize);
58 
61  bool hasTable(MetadataTableType metadataTableType) const;
63 };
64 
65 } // namespace fileformat
66 } // namespace retdec
67 
68 #endif
Definition: metadata_table.h:68
Definition: metadata_stream.h:21
std::uint32_t majorVersion
Definition: metadata_stream.h:25
BaseMetadataTable * getMetadataTable(MetadataTableType tableType)
Definition: metadata_stream.cpp:72
void setMajorVersion(std::uint32_t streamMajorVersion)
Definition: metadata_stream.cpp:99
void setMinorVersion(std::uint32_t streamMinorVersion)
Definition: metadata_stream.cpp:108
bool hasTable(MetadataTableType metadataTableType) const
Definition: metadata_stream.cpp:301
std::uint32_t blobStreamIndexSize
Definition: metadata_stream.h:29
std::uint32_t getGuidStreamIndexSize() const
Definition: metadata_stream.cpp:53
std::uint32_t minorVersion
Definition: metadata_stream.h:26
std::uint32_t stringStreamIndexSize
Definition: metadata_stream.h:27
std::uint32_t getBlobStreamIndexSize() const
Definition: metadata_stream.cpp:62
std::map< MetadataTableType, std::unique_ptr< BaseMetadataTable > > TypeToTableMap
Definition: metadata_stream.h:23
std::uint32_t getMinorVersion() const
Definition: metadata_stream.cpp:35
void setGuidStreamIndexSize(std::uint32_t indexSize)
Definition: metadata_stream.cpp:128
TypeToTableMap metadataTables
Definition: metadata_stream.h:30
std::uint32_t guidStreamIndexSize
Definition: metadata_stream.h:28
std::uint32_t getMajorVersion() const
Definition: metadata_stream.cpp:26
MetadataStream(std::uint64_t streamOffset, std::uint64_t streamSize)
Definition: metadata_stream.cpp:18
std::uint32_t getStringStreamIndexSize() const
Definition: metadata_stream.cpp:44
void setStringStreamIndexSize(std::uint32_t indexSize)
Definition: metadata_stream.cpp:118
void setBlobStreamIndexSize(std::uint32_t indexSize)
Definition: metadata_stream.cpp:138
BaseMetadataTable * addMetadataTable(MetadataTableType tableType, std::uint32_t tableSize)
Definition: metadata_stream.cpp:151
Definition: stream.h:33
Container utilities.
Class for metadata table.
MetadataTableType
Definition: metadata_table.h:17
Definition: archive_wrapper.h:19
Abstract class for Stream.