LLDB mainline
lldb_private::npdb::PdbAstBuilderClang Class Reference

#include <PdbAstBuilderClang.h>

Inheritance diagram for lldb_private::npdb::PdbAstBuilderClang:
[legend]

Public Member Functions

 PdbAstBuilderClang (TypeSystemClang &clang)
CompilerDecl GetOrCreateDeclForUid (PdbSymUid uid) override
CompilerDeclContext GetOrCreateDeclContextForUid (PdbSymUid uid) override
CompilerDeclContext GetParentDeclContext (PdbSymUid uid) override
void EnsureFunction (PdbCompilandSymId func_id) override
void EnsureInlinedFunction (PdbCompilandSymId inlinesite_id) override
void EnsureBlock (PdbCompilandSymId block_id) override
void EnsureVariable (PdbCompilandSymId scope_id, PdbCompilandSymId var_id) override
void EnsureVariable (PdbGlobalSymId var_id) override
CompilerType GetOrCreateType (PdbTypeSymId type) override
CompilerType GetOrCreateTypedefType (PdbGlobalSymId id) override
bool CompleteType (CompilerType ct) override
void ParseDeclsForContext (CompilerDeclContext context) override
CompilerDeclContext FindNamespaceDecl (CompilerDeclContext parent_ctx, llvm::StringRef name) override
void Dump (Stream &stream, llvm::StringRef filter, bool show_color) override
clang::QualType GetBasicType (lldb::BasicType type)
clang::QualType GetOrCreateClangType (PdbTypeSymId type)
clang::DeclContext * GetOrCreateClangDeclContextForUid (PdbSymUid uid)
CompilerDecl ToCompilerDecl (clang::Decl *decl)
CompilerType ToCompilerType (clang::QualType qt)
CompilerDeclContext ToCompilerDeclContext (clang::DeclContext *context)
clang::QualType FromCompilerType (CompilerType ct)
clang::Decl * FromCompilerDecl (CompilerDecl decl)
clang::DeclContext * FromCompilerDeclContext (CompilerDeclContext context)
bool CompleteTagDecl (clang::TagDecl &tag)
TypeSystemClangclang ()
ClangASTImporterGetClangASTImporter ()
Public Member Functions inherited from lldb_private::npdb::PdbAstBuilder
virtual ~PdbAstBuilder ()=default

Private Types

using TypeIndex = llvm::codeview::TypeIndex
using NamespaceSet = llvm::DenseSet<clang::NamespaceDecl *>

Private Member Functions

CompilerDeclContext GetTranslationUnitDecl ()
clang::DeclContext * GetParentClangDeclContext (PdbSymUid uid)
clang::Decl * TryGetDecl (PdbSymUid uid) const
clang::FunctionDecl * GetOrCreateFunctionDecl (PdbCompilandSymId func_id)
clang::FunctionDecl * GetOrCreateInlinedFunctionDecl (PdbCompilandSymId inlinesite_id)
clang::BlockDecl * GetOrCreateBlockDecl (PdbCompilandSymId block_id)
clang::VarDecl * GetOrCreateVariableDecl (PdbCompilandSymId scope_id, PdbCompilandSymId var_id)
clang::VarDecl * GetOrCreateVariableDecl (PdbGlobalSymId var_id)
clang::QualType CreatePointerType (const llvm::codeview::PointerRecord &pointer)
clang::QualType CreateModifierType (const llvm::codeview::ModifierRecord &modifier)
clang::QualType CreateArrayType (const llvm::codeview::ArrayRecord &array)
clang::QualType CreateRecordType (PdbTypeSymId id, const llvm::codeview::TagRecord &record)
clang::QualType CreateEnumType (PdbTypeSymId id, const llvm::codeview::EnumRecord &record)
clang::QualType CreateFunctionType (TypeIndex args_type_idx, TypeIndex return_type_idx, llvm::codeview::CallingConvention calling_convention)
clang::QualType CreateType (PdbTypeSymId type)
void CreateFunctionParameters (PdbCompilandSymId func_id, clang::FunctionDecl &function_decl, uint32_t param_count)
clang::Decl * GetOrCreateSymbolForId (PdbCompilandSymId id)
clang::VarDecl * CreateVariableDecl (PdbSymUid uid, llvm::codeview::CVSymbol sym, clang::DeclContext &scope)
clang::NamespaceDecl * GetOrCreateNamespaceDecl (const char *name, clang::DeclContext &context)
clang::FunctionDecl * CreateFunctionDeclFromId (PdbTypeSymId func_tid, PdbCompilandSymId func_sid)
clang::FunctionDecl * CreateFunctionDecl (PdbCompilandSymId func_id, llvm::StringRef func_name, TypeIndex func_ti, CompilerType func_ct, uint32_t param_count, clang::StorageClass func_storage, bool is_inline, clang::DeclContext *parent)
void ParseNamespace (clang::DeclContext &parent)
void ParseAllTypes ()
void ParseAllFunctionsAndNonLocalVars ()
void ParseDeclsForSimpleContext (clang::DeclContext &context)
void ParseBlockChildren (PdbCompilandSymId block_id)
std::pair< clang::DeclContext *, std::string > CreateDeclInfoForType (const llvm::codeview::TagRecord &record, TypeIndex ti)
std::pair< clang::DeclContext *, std::string > CreateDeclInfoForUndecoratedName (llvm::StringRef uname)
clang::QualType CreateSimpleType (TypeIndex ti)

Private Attributes

TypeSystemClangm_clang
ClangASTImporter m_importer
llvm::once_flag m_parse_functions_and_non_local_vars
llvm::once_flag m_parse_all_types
llvm::DenseMap< clang::Decl *, DeclStatusm_decl_to_status
llvm::DenseMap< lldb::user_id_t, clang::Decl * > m_uid_to_decl
llvm::DenseMap< lldb::user_id_t, clang::QualType > m_uid_to_type
llvm::DenseMap< lldb::opaque_compiler_type_t, llvm::SmallSet< std::pair< llvm::StringRef, CompilerType >, 8 > > m_cxx_record_map
NamespaceSet m_parsed_namespaces
NamespaceSet m_known_namespaces
llvm::DenseMap< clang::DeclContext *, NamespaceSetm_parent_to_namespaces

Detailed Description

Definition at line 53 of file PdbAstBuilderClang.h.

Member Typedef Documentation

◆ NamespaceSet

using lldb_private::npdb::PdbAstBuilderClang::NamespaceSet = llvm::DenseSet<clang::NamespaceDecl *>
private

Definition at line 169 of file PdbAstBuilderClang.h.

◆ TypeIndex

using lldb_private::npdb::PdbAstBuilderClang::TypeIndex = llvm::codeview::TypeIndex
private

Definition at line 110 of file PdbAstBuilderClang.h.

Constructor & Destructor Documentation

◆ PdbAstBuilderClang()

PdbAstBuilderClang::PdbAstBuilderClang ( TypeSystemClang & clang)

Definition at line 164 of file PdbAstBuilderClang.cpp.

References m_clang.

Member Function Documentation

◆ clang()

TypeSystemClang & lldb_private::npdb::PdbAstBuilderClang::clang ( )
inline

Definition at line 93 of file PdbAstBuilderClang.h.

References m_clang.

◆ CompleteTagDecl()

◆ CompleteType()

bool PdbAstBuilderClang::CompleteType ( CompilerType ct)
overridevirtual

◆ CreateArrayType()

clang::QualType PdbAstBuilderClang::CreateArrayType ( const llvm::codeview::ArrayRecord & array)
private

◆ CreateDeclInfoForType()

std::pair< clang::DeclContext *, std::string > PdbAstBuilderClang::CreateDeclInfoForType ( const llvm::codeview::TagRecord & record,
TypeIndex ti )
private

◆ CreateDeclInfoForUndecoratedName()

std::pair< clang::DeclContext *, std::string > PdbAstBuilderClang::CreateDeclInfoForUndecoratedName ( llvm::StringRef uname)
private

◆ CreateEnumType()

◆ CreateFunctionDecl()

clang::FunctionDecl * PdbAstBuilderClang::CreateFunctionDecl ( PdbCompilandSymId func_id,
llvm::StringRef func_name,
TypeIndex func_ti,
CompilerType func_ct,
uint32_t param_count,
clang::StorageClass func_storage,
bool is_inline,
clang::DeclContext * parent )
private

◆ CreateFunctionDeclFromId()

◆ CreateFunctionParameters()

◆ CreateFunctionType()

clang::QualType PdbAstBuilderClang::CreateFunctionType ( TypeIndex args_type_idx,
TypeIndex return_type_idx,
llvm::codeview::CallingConvention calling_convention )
private

◆ CreateModifierType()

clang::QualType PdbAstBuilderClang::CreateModifierType ( const llvm::codeview::ModifierRecord & modifier)
private

Definition at line 605 of file PdbAstBuilderClang.cpp.

References GetOrCreateClangType().

Referenced by CreateType().

◆ CreatePointerType()

clang::QualType PdbAstBuilderClang::CreatePointerType ( const llvm::codeview::PointerRecord & pointer)
private

Definition at line 532 of file PdbAstBuilderClang.cpp.

References GetOrCreateClangType(), and m_clang.

Referenced by CreateType().

◆ CreateRecordType()

◆ CreateSimpleType()

clang::QualType PdbAstBuilderClang::CreateSimpleType ( TypeIndex ti)
private

◆ CreateType()

◆ CreateVariableDecl()

◆ Dump()

void PdbAstBuilderClang::Dump ( Stream & stream,
llvm::StringRef filter,
bool show_color )
overridevirtual

◆ EnsureBlock()

void PdbAstBuilderClang::EnsureBlock ( PdbCompilandSymId block_id)
overridevirtual

Implements lldb_private::npdb::PdbAstBuilder.

Definition at line 1111 of file PdbAstBuilderClang.cpp.

References GetOrCreateBlockDecl().

◆ EnsureFunction()

void PdbAstBuilderClang::EnsureFunction ( PdbCompilandSymId func_id)
overridevirtual

Implements lldb_private::npdb::PdbAstBuilder.

Definition at line 1102 of file PdbAstBuilderClang.cpp.

References GetOrCreateFunctionDecl().

◆ EnsureInlinedFunction()

void PdbAstBuilderClang::EnsureInlinedFunction ( PdbCompilandSymId inlinesite_id)
overridevirtual

◆ EnsureVariable() [1/2]

void PdbAstBuilderClang::EnsureVariable ( PdbCompilandSymId scope_id,
PdbCompilandSymId var_id )
overridevirtual

Implements lldb_private::npdb::PdbAstBuilder.

Definition at line 1115 of file PdbAstBuilderClang.cpp.

References GetOrCreateVariableDecl().

◆ EnsureVariable() [2/2]

void PdbAstBuilderClang::EnsureVariable ( PdbGlobalSymId var_id)
overridevirtual

Implements lldb_private::npdb::PdbAstBuilder.

Definition at line 1120 of file PdbAstBuilderClang.cpp.

References GetOrCreateVariableDecl().

◆ FindNamespaceDecl()

CompilerDeclContext PdbAstBuilderClang::FindNamespaceDecl ( CompilerDeclContext parent_ctx,
llvm::StringRef name )
overridevirtual

◆ FromCompilerDecl()

clang::Decl * PdbAstBuilderClang::FromCompilerDecl ( CompilerDecl decl)

◆ FromCompilerDeclContext()

◆ FromCompilerType()

clang::QualType PdbAstBuilderClang::FromCompilerType ( CompilerType ct)

Definition at line 1500 of file PdbAstBuilderClang.cpp.

References lldb_private::ClangUtil::GetQualType().

Referenced by CompleteType().

◆ GetBasicType()

clang::QualType PdbAstBuilderClang::GetBasicType ( lldb::BasicType type)

Definition at line 771 of file PdbAstBuilderClang.cpp.

References lldb_private::CompilerType::GetOpaqueQualType(), and m_clang.

Referenced by CreateSimpleType().

◆ GetClangASTImporter()

ClangASTImporter & lldb_private::npdb::PdbAstBuilderClang::GetClangASTImporter ( )
inline

Definition at line 94 of file PdbAstBuilderClang.h.

References m_importer.

Referenced by CompleteType().

◆ GetOrCreateBlockDecl()

◆ GetOrCreateClangDeclContextForUid()

◆ GetOrCreateClangType()

◆ GetOrCreateDeclContextForUid()

CompilerDeclContext PdbAstBuilderClang::GetOrCreateDeclContextForUid ( PdbSymUid uid)
overridevirtual

◆ GetOrCreateDeclForUid()

◆ GetOrCreateFunctionDecl()

◆ GetOrCreateInlinedFunctionDecl()

◆ GetOrCreateNamespaceDecl()

clang::NamespaceDecl * PdbAstBuilderClang::GetOrCreateNamespaceDecl ( const char * name,
clang::DeclContext & context )
private

◆ GetOrCreateSymbolForId()

◆ GetOrCreateType()

CompilerType PdbAstBuilderClang::GetOrCreateType ( PdbTypeSymId type)
overridevirtual

◆ GetOrCreateTypedefType()

◆ GetOrCreateVariableDecl() [1/2]

◆ GetOrCreateVariableDecl() [2/2]

clang::VarDecl * PdbAstBuilderClang::GetOrCreateVariableDecl ( PdbGlobalSymId var_id)
private

◆ GetParentClangDeclContext()

◆ GetParentDeclContext()

CompilerDeclContext PdbAstBuilderClang::GetParentDeclContext ( PdbSymUid uid)
overridevirtual

◆ GetTranslationUnitDecl()

◆ ParseAllFunctionsAndNonLocalVars()

◆ ParseAllTypes()

void PdbAstBuilderClang::ParseAllTypes ( )
private

◆ ParseBlockChildren()

◆ ParseDeclsForContext()

◆ ParseDeclsForSimpleContext()

void PdbAstBuilderClang::ParseDeclsForSimpleContext ( clang::DeclContext & context)
private

◆ ParseNamespace()

◆ ToCompilerDecl()

CompilerDecl PdbAstBuilderClang::ToCompilerDecl ( clang::Decl * decl)

Definition at line 1492 of file PdbAstBuilderClang.cpp.

References m_clang.

Referenced by GetOrCreateDeclForUid().

◆ ToCompilerDeclContext()

CompilerDeclContext PdbAstBuilderClang::ToCompilerDeclContext ( clang::DeclContext * context)

◆ ToCompilerType()

◆ TryGetDecl()

Member Data Documentation

◆ m_clang

◆ m_cxx_record_map

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

Definition at line 167 of file PdbAstBuilderClang.h.

Referenced by CompleteTagDecl(), and CreateFunctionDecl().

◆ m_decl_to_status

◆ m_importer

ClangASTImporter lldb_private::npdb::PdbAstBuilderClang::m_importer
private

Definition at line 156 of file PdbAstBuilderClang.h.

Referenced by GetClangASTImporter().

◆ m_known_namespaces

NamespaceSet lldb_private::npdb::PdbAstBuilderClang::m_known_namespaces
private

Definition at line 175 of file PdbAstBuilderClang.h.

Referenced by FindNamespaceDecl(), and GetOrCreateNamespaceDecl().

◆ m_parent_to_namespaces

llvm::DenseMap<clang::DeclContext *, NamespaceSet> lldb_private::npdb::PdbAstBuilderClang::m_parent_to_namespaces
private

Definition at line 176 of file PdbAstBuilderClang.h.

Referenced by FindNamespaceDecl(), and GetOrCreateNamespaceDecl().

◆ m_parse_all_types

llvm::once_flag lldb_private::npdb::PdbAstBuilderClang::m_parse_all_types
private

Definition at line 158 of file PdbAstBuilderClang.h.

Referenced by ParseAllTypes().

◆ m_parse_functions_and_non_local_vars

llvm::once_flag lldb_private::npdb::PdbAstBuilderClang::m_parse_functions_and_non_local_vars
private

Definition at line 157 of file PdbAstBuilderClang.h.

Referenced by ParseAllFunctionsAndNonLocalVars().

◆ m_parsed_namespaces

NamespaceSet lldb_private::npdb::PdbAstBuilderClang::m_parsed_namespaces
private

Definition at line 172 of file PdbAstBuilderClang.h.

Referenced by ParseNamespace().

◆ m_uid_to_decl

llvm::DenseMap<lldb::user_id_t, clang::Decl *> lldb_private::npdb::PdbAstBuilderClang::m_uid_to_decl
private

◆ m_uid_to_type

llvm::DenseMap<lldb::user_id_t, clang::QualType> lldb_private::npdb::PdbAstBuilderClang::m_uid_to_type
private

Definition at line 161 of file PdbAstBuilderClang.h.

Referenced by GetOrCreateClangType().


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