LLDB mainline
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
lldb_private::npdb::UdtRecordCompleter Class Reference

#include <UdtRecordCompleter.h>

Inheritance diagram for lldb_private::npdb::UdtRecordCompleter:
Inheritance graph
[legend]

Classes

struct  Member
 
struct  Record
 
union  UdtTagRecord
 

Public Types

using MemberUP = std::unique_ptr< Member >
 

Public Member Functions

 UdtRecordCompleter (PdbTypeSymId id, CompilerType &derived_ct, clang::TagDecl &tag_decl, PdbAstBuilder &ast_builder, PdbIndex &index, llvm::DenseMap< clang::Decl *, DeclStatus > &decl_to_status, llvm::DenseMap< lldb::opaque_compiler_type_t, llvm::SmallSet< std::pair< llvm::StringRef, CompilerType >, 8 > > &cxx_record_map)
 
void complete ()
 

Private Types

using IndexedBase = std::pair< uint64_t, std::unique_ptr< clang::CXXBaseSpecifier > >
 

Private Member Functions

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)
 
void FinishRecord ()
 
uint64_t AddMember (TypeSystemClang &clang, Member *field, uint64_t bit_offset, CompilerType parent_ct, ClangASTImporter::LayoutInfo &parent_layout, clang::DeclContext *decl_ctx)
 

Private Attributes

union lldb_private::npdb::UdtRecordCompleter::UdtTagRecord m_cvr
 
PdbTypeSymId m_id
 
CompilerTypem_derived_ct
 
clang::TagDecl & m_tag_decl
 
PdbAstBuilderm_ast_builder
 
PdbIndexm_index
 
std::vector< IndexedBasem_bases
 
ClangASTImporter::LayoutInfo m_layout
 
llvm::DenseMap< clang::Decl *, DeclStatus > & m_decl_to_status
 
llvm::DenseMap< lldb::opaque_compiler_type_t, llvm::SmallSet< std::pair< llvm::StringRef, CompilerType >, 8 > > & m_cxx_record_map
 
Record m_record
 

Detailed Description

Definition at line 40 of file UdtRecordCompleter.h.

Member Typedef Documentation

◆ IndexedBase

using lldb_private::npdb::UdtRecordCompleter::IndexedBase = std::pair<uint64_t, std::unique_ptr<clang::CXXBaseSpecifier> >
private

Definition at line 41 of file UdtRecordCompleter.h.

◆ MemberUP

Definition at line 79 of file UdtRecordCompleter.h.

Constructor & Destructor Documentation

◆ UdtRecordCompleter()

UdtRecordCompleter::UdtRecordCompleter ( PdbTypeSymId  id,
CompilerType derived_ct,
clang::TagDecl &  tag_decl,
PdbAstBuilder ast_builder,
PdbIndex index,
llvm::DenseMap< clang::Decl *, DeclStatus > &  decl_to_status,
llvm::DenseMap< lldb::opaque_compiler_type_t, llvm::SmallSet< std::pair< llvm::StringRef, CompilerType >, 8 > > &  cxx_record_map 
)

Member Function Documentation

◆ AddBaseClassForTypeIndex()

clang::QualType UdtRecordCompleter::AddBaseClassForTypeIndex ( llvm::codeview::TypeIndex  ti,
llvm::codeview::MemberAccess  access,
std::optional< uint64_t >  vtable_idx = std::optional<uint64_t>() 
)
private

◆ AddMember()

uint64_t UdtRecordCompleter::AddMember ( TypeSystemClang clang,
Member field,
uint64_t  bit_offset,
CompilerType  parent_ct,
ClangASTImporter::LayoutInfo parent_layout,
clang::DeclContext *  decl_ctx 
)
private

Definition at line 340 of file UdtRecordCompleter.cpp.

References lldb_private::npdb::UdtRecordCompleter::Member::access, lldb_private::TypeSystemClang::AddFieldToRecordType(), AddMember(), lldb_private::npdb::SymbolFileNativePDB::anonymous_id, lldb_private::npdb::UdtRecordCompleter::Member::base_offset, lldb_private::ClangASTImporter::LayoutInfo::bit_size, lldb_private::npdb::UdtRecordCompleter::Member::bit_size, lldb_private::npdb::UdtRecordCompleter::Member::bitfield_width, lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb::eAccessPublic, lldb::eLanguageTypeC_plus_plus, lldb_private::npdb::UdtRecordCompleter::Member::Field, lldb_private::ClangASTImporter::LayoutInfo::field_offsets, lldb_private::npdb::UdtRecordCompleter::Member::fields, lldb_private::npdb::PdbAstBuilder::GetClangASTImporter(), lldb_private::npdb::UdtRecordCompleter::Member::kind, m_ast_builder, m_decl_to_status, lldb_private::npdb::UdtRecordCompleter::Member::name, lldb_private::npdb::UdtRecordCompleter::Member::qt, lldb_private::npdb::DeclStatus::resolved, lldb_private::ClangASTMetadata::SetIsDynamicCXXType(), lldb_private::ClangASTImporter::SetRecordLayout(), lldb_private::ClangASTMetadata::SetUserID(), lldb_private::TypeSystemClang::StartTagDeclarationDefinition(), lldb_private::npdb::UdtRecordCompleter::Member::Struct, lldb_private::npdb::PdbAstBuilder::ToCompilerType(), lldb_private::npdb::DeclStatus::uid, and lldb_private::npdb::UdtRecordCompleter::Member::Union.

Referenced by AddMember(), and FinishRecord().

◆ AddMethod()

void UdtRecordCompleter::AddMethod ( llvm::StringRef  name,
llvm::codeview::TypeIndex  type_idx,
llvm::codeview::MemberAccess  access,
llvm::codeview::MethodOptions  options,
llvm::codeview::MemberAttributes  attrs 
)
private

◆ complete()

void UdtRecordCompleter::complete ( )

◆ FinishRecord()

void UdtRecordCompleter::FinishRecord ( )
private

Member Data Documentation

◆ m_ast_builder

PdbAstBuilder& lldb_private::npdb::UdtRecordCompleter::m_ast_builder
private

◆ m_bases

std::vector<IndexedBase> lldb_private::npdb::UdtRecordCompleter::m_bases
private

Definition at line 56 of file UdtRecordCompleter.h.

Referenced by AddBaseClassForTypeIndex(), and complete().

◆ m_cvr

union lldb_private::npdb::UdtRecordCompleter::UdtTagRecord lldb_private::npdb::UdtRecordCompleter::m_cvr
private

Referenced by UdtRecordCompleter().

◆ m_cxx_record_map

llvm::DenseMap<lldb::opaque_compiler_type_t, llvm::SmallSet<std::pair<llvm::StringRef, CompilerType>, 8> >& lldb_private::npdb::UdtRecordCompleter::m_cxx_record_map
private

Definition at line 61 of file UdtRecordCompleter.h.

Referenced by AddMethod().

◆ m_decl_to_status

llvm::DenseMap<clang::Decl *, DeclStatus>& lldb_private::npdb::UdtRecordCompleter::m_decl_to_status
private

Definition at line 58 of file UdtRecordCompleter.h.

Referenced by AddMember().

◆ m_derived_ct

CompilerType& lldb_private::npdb::UdtRecordCompleter::m_derived_ct
private

Definition at line 52 of file UdtRecordCompleter.h.

Referenced by AddMethod(), complete(), and FinishRecord().

◆ m_id

PdbTypeSymId lldb_private::npdb::UdtRecordCompleter::m_id
private

Definition at line 51 of file UdtRecordCompleter.h.

Referenced by FinishRecord(), and UdtRecordCompleter().

◆ m_index

PdbIndex& lldb_private::npdb::UdtRecordCompleter::m_index
private

Definition at line 55 of file UdtRecordCompleter.h.

Referenced by AddBaseClassForTypeIndex(), and UdtRecordCompleter().

◆ m_layout

ClangASTImporter::LayoutInfo lldb_private::npdb::UdtRecordCompleter::m_layout
private

Definition at line 57 of file UdtRecordCompleter.h.

Referenced by complete(), FinishRecord(), and UdtRecordCompleter().

◆ m_record

Record lldb_private::npdb::UdtRecordCompleter::m_record
private

Definition at line 128 of file UdtRecordCompleter.h.

Referenced by FinishRecord(), and UdtRecordCompleter().

◆ m_tag_decl

clang::TagDecl& lldb_private::npdb::UdtRecordCompleter::m_tag_decl
private

Definition at line 53 of file UdtRecordCompleter.h.

Referenced by complete().


The documentation for this class was generated from the following files: