9#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_UDTRECORDCOMPLETER_H
10#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_UDTRECORDCOMPLETER_H
15#include "llvm/DebugInfo/CodeView/CVRecord.h"
16#include "llvm/DebugInfo/CodeView/TypeRecord.h"
17#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
21class CXXBaseSpecifier;
42 std::pair<uint64_t, std::unique_ptr<clang::CXXBaseSpecifier>>;
46 llvm::codeview::UnionRecord
ur;
47 llvm::codeview::ClassRecord
cr;
48 llvm::codeview::EnumRecord
er;
60 llvm::SmallSet<std::pair<llvm::StringRef, CompilerType>, 8>>
67 llvm::DenseMap<clang::Decl *, DeclStatus> &decl_to_status,
69 llvm::SmallSet<std::pair<llvm::StringRef, CompilerType>,
72#define MEMBER_RECORD(EnumName, EnumVal, Name) \
73 llvm::Error visitKnownMember(llvm::codeview::CVMemberRecord &CVR, \
74 llvm::codeview::Name##Record &Record) override;
75#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
76#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
92 llvm::SmallVector<MemberUP, 1>
fields;
108 name = llvm::StringRef();
109 qt = clang::QualType();
119 std::map<uint64_t, llvm::SmallVector<MemberUP, 1>>
fields_map;
121 uint64_t field_size, clang::QualType qt,
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::MemberAccess access,
134 llvm::codeview::MethodOptions options,
135 llvm::codeview::MemberAttributes attrs);
140 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
llvm::DenseMap< lldb::opaque_compiler_type_t, llvm::SmallSet< std::pair< llvm::StringRef, CompilerType >, 8 > > & m_cxx_record_map
ClangASTImporter::LayoutInfo m_layout
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)
clang::QualType AddBaseClassForTypeIndex(llvm::codeview::TypeIndex ti, llvm::codeview::MemberAccess access, std::optional< uint64_t > vtable_idx=std::optional< uint64_t >())
void AddMethod(llvm::StringRef name, llvm::codeview::TypeIndex type_idx, llvm::codeview::MemberAccess access, llvm::codeview::MethodOptions options, llvm::codeview::MemberAttributes attrs)
PdbAstBuilder & m_ast_builder
union lldb_private::npdb::UdtRecordCompleter::UdtTagRecord m_cvr
std::unique_ptr< Member > MemberUP
A class that represents a running process on the host machine.
void * opaque_compiler_type_t
llvm::SmallVector< MemberUP, 1 > fields
Member(llvm::StringRef name, uint64_t bit_offset, uint64_t bit_size, clang::QualType qt, lldb::AccessType access, uint32_t bitfield_width)
enum lldb_private::npdb::UdtRecordCompleter::Member::Kind kind
void CollectMember(llvm::StringRef name, uint64_t offset, uint64_t field_size, clang::QualType qt, lldb::AccessType access, uint64_t bitfield_width)
std::map< uint64_t, llvm::SmallVector< MemberUP, 1 > > fields_map
llvm::codeview::EnumRecord er
llvm::codeview::ClassRecord cr
llvm::codeview::UnionRecord ur