Go to the documentation of this file.
9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_TPISTREAMBUILDER_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_TPISTREAMBUILDER_H
22 class BinaryByteStream;
23 template <
typename T>
struct BinaryItemTraits;
37 struct TpiStreamHeader;
63 uint32_t calculateHashBufferSize()
const;
64 uint32_t calculateIndexOffsetSize()
const;
71 size_t TypeRecordBytes = 0;
74 std::vector<ArrayRef<uint8_t>> TypeRecBuffers;
75 std::vector<uint32_t> TypeHashes;
76 std::vector<codeview::TypeIndexOffset> TypeIndexOffsets;
78 std::unique_ptr<BinaryByteStream> HashValueStream;
This is an optimization pass for GlobalISel generic memory operations.
void addTypeRecords(ArrayRef< uint8_t > Types, ArrayRef< uint16_t > Sizes, ArrayRef< uint32_t > Hashes)
const uint16_t kInvalidStreamIndex
The instances of the Type class are immutable: once they are created, they are never changed.
static ArrayRef< uint8_t > bytes(const codeview::CVType &Item)
Error finalizeMsfLayout()
uint32_t getRecordCount() const
Allocate memory in an ever growing pool, as if by bump-pointer.
uint32_t calculateSerializedLength()
static size_t length(const codeview::CVType &Item)
void setVersionHeader(PdbRaw_TpiVer Version)
Lightweight error class with error context and mandatory checking.
ArrayRef< uint8_t > data() const
Error commit(const msf::MSFLayout &Layout, WritableBinaryStreamRef Buffer)
void addTypeRecord(ArrayRef< uint8_t > Type, std::optional< uint32_t > Hash)
TpiStreamBuilder & operator=(const TpiStreamBuilder &)=delete
TpiStreamBuilder(msf::MSFBuilder &Msf, uint32_t StreamIdx)