9#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_UDTRECORDCOMPLETER_H
10#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_UDTRECORDCOMPLETER_H
16#include "llvm/DebugInfo/CodeView/CVRecord.h"
17#include "llvm/DebugInfo/CodeView/TypeRecord.h"
18#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
22class CXXBaseSpecifier;
42 std::pair<uint64_t, std::unique_ptr<clang::CXXBaseSpecifier>>;
60 llvm::DenseMap<clang::Decl *, DeclStatus> &decl_to_status);
64#define MEMBER_RECORD(EnumName, EnumVal, Name) \
65 llvm::Error visitKnownMember(llvm::codeview::CVMemberRecord &CVR, \
66 llvm::codeview::Name##Record &Record) override;
67#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
68#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
86 llvm::SmallVector<MemberUP, 1>
fields;
104 name = llvm::StringRef();
105 qt = clang::QualType();
118 std::map<uint64_t, llvm::SmallVector<MemberUP, 1>>
fields_map;
120 uint64_t field_size, clang::QualType qt,
122 uint32_t member_index);
130 llvm::codeview::TypeIndex ti, llvm::codeview::MemberAccess access,
131 std::optional<uint64_t> vtable_idx = std::optional<uint64_t>());
132 void AddMethod(llvm::StringRef name, llvm::codeview::TypeIndex type_idx,
133 llvm::codeview::MethodOptions options,
134 llvm::codeview::MemberAttributes attrs);
139 clang::DeclContext *decl_ctx);
Generic representation of a type in a programming language.
A TypeSystem implementation based on Clang.
PdbIndex - Lazy access to the important parts of a PDB file.
std::vector< IndexedBase > m_bases
CVTagRecord m_cv_tag_record
llvm::Error visitMemberEnd(llvm::codeview::CVMemberRecord &Record) override
ClangASTImporter::LayoutInfo m_layout
UdtRecordCompleter(PdbTypeSymId id, CompilerType &derived_ct, clang::TagDecl &tag_decl, PdbAstBuilderClang &ast_builder, PdbIndex &index, llvm::DenseMap< clang::Decl *, DeclStatus > &decl_to_status)
clang::TagDecl & m_tag_decl
std::pair< uint64_t, std::unique_ptr< clang::CXXBaseSpecifier > > IndexedBase
CompilerType & m_derived_ct
llvm::DenseMap< clang::Decl *, DeclStatus > & m_decl_to_status
uint64_t AddMember(TypeSystemClang &clang, Member *field, uint64_t bit_offset, CompilerType parent_ct, ClangASTImporter::LayoutInfo &parent_layout, clang::DeclContext *decl_ctx)
PdbAstBuilderClang & m_ast_builder
clang::QualType AddBaseClassForTypeIndex(llvm::codeview::TypeIndex ti, llvm::codeview::MemberAccess access, std::optional< uint64_t > vtable_idx=std::optional< uint64_t >())
uint32_t m_member_index
Index of the current member.
void AddMethod(llvm::StringRef name, llvm::codeview::TypeIndex type_idx, llvm::codeview::MethodOptions options, llvm::codeview::MemberAttributes attrs)
std::unique_ptr< Member > MemberUP
A class that represents a running process on the host machine.
Member(llvm::StringRef name, uint64_t bit_offset, uint64_t bit_size, clang::QualType qt, lldb::AccessType access, uint32_t bitfield_width, uint32_t original_index)
llvm::SmallVector< MemberUP, 1 > fields
enum lldb_private::npdb::UdtRecordCompleter::Member::Kind kind
void RestoreOriginalOrder()
uint32_t original_index
Index of the member inside the LF_FIELDLIST.
std::map< uint64_t, llvm::SmallVector< MemberUP, 1 > > fields_map
void CollectMember(llvm::StringRef name, uint64_t offset, uint64_t field_size, clang::QualType qt, lldb::AccessType access, uint64_t bitfield_width, uint32_t member_index)