Dashboard
PHP:
8.1.33
OS:
Linux
User:
lawtemple
/
/
usr
/
include
/
llvm
/
DebugInfo
/
CodeView
📤 Upload
📝 New File
📁 New Folder
Close
Editing: ContinuationRecordBuilder.h
//===- ContinuationRecordBuilder.h ------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_CODEVIEW_CONTINUATIONRECORDBUILDER_H #define LLVM_DEBUGINFO_CODEVIEW_CONTINUATIONRECORDBUILDER_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/DebugInfo/CodeView/CVRecord.h" #include "llvm/DebugInfo/CodeView/TypeRecordMapping.h" #include "llvm/Support/BinaryByteStream.h" #include "llvm/Support/BinaryStreamWriter.h" #include <cstdint> #include <vector> namespace llvm { namespace codeview { class TypeIndex; enum class ContinuationRecordKind { FieldList, MethodOverloadList }; class ContinuationRecordBuilder { SmallVector<uint32_t, 4> SegmentOffsets; std::optional<ContinuationRecordKind> Kind; AppendingBinaryByteStream Buffer; BinaryStreamWriter SegmentWriter; TypeRecordMapping Mapping; ArrayRef<uint8_t> InjectedSegmentBytes; uint32_t getCurrentSegmentLength() const; void insertSegmentEnd(uint32_t Offset); CVType createSegmentRecord(uint32_t OffBegin, uint32_t OffEnd, std::optional<TypeIndex> RefersTo); public: ContinuationRecordBuilder(); ~ContinuationRecordBuilder(); void begin(ContinuationRecordKind RecordKind); // This template is explicitly instantiated in the implementation file for all // supported types. The method itself is ugly, so inlining it into the header // file clutters an otherwise straightforward interface. template <typename RecordType> void writeMemberType(RecordType &Record); std::vector<CVType> end(TypeIndex Index); }; } // namespace codeview } // namespace llvm #endif
Save
Cancel