12#include "clang/AST/Decl.h"
13#include "clang/AST/DeclObjC.h"
25 clang::ObjCInterfaceDecl *objc_decl) {
30 const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,
31 llvm::DenseMap<const clang::FieldDecl *, uint64_t> &FieldOffsets,
32 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits> &BaseOffsets,
33 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
34 &VirtualBaseOffsets) {
36 BaseOffsets, VirtualBaseOffsets);
40 const clang::DeclContext *decl_ctx,
41 llvm::function_ref<
bool(clang::Decl::Kind)> IsKindWeWant,
44 clang::TagDecl *tag_decl = llvm::dyn_cast<clang::TagDecl>(
45 const_cast<clang::DeclContext *
>(decl_ctx));
52 const clang::DeclContext *DC, clang::DeclarationName Name) {
53 llvm::SmallVector<clang::NamedDecl *, 4> decls;
56 if (
auto *oid = llvm::dyn_cast<clang::ObjCInterfaceDecl>(DC)) {
57 clang::ObjCContainerDecl::method_range noload_methods(oid->noload_decls());
58 for (
auto *omd : noload_methods)
59 if (omd->getDeclName() == Name)
62 return !SetExternalVisibleDeclsForName(DC, Name, decls).empty();
69 m_ids.insert({module,
id});
73std::optional<clang::ASTSourceDescriptor>
75 if (clang::Module *module =
getModule(
id))
static char ID
LLVM RTTI support.
std::vector< clang::Module * > m_modules
bool FindExternalVisibleDeclsByName(const clang::DeclContext *DC, clang::DeclarationName Name) override
OptionalClangModuleID RegisterModule(clang::Module *module)
std::optional< clang::ASTSourceDescriptor > getSourceDescriptor(unsigned ID) override
Module-related methods.
void CompleteType(clang::TagDecl *tag_decl) override
OptionalClangModuleID GetIDForModule(clang::Module *module)
clang::Module * getModule(unsigned ID) override
bool layoutRecordType(const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment, llvm::DenseMap< const clang::FieldDecl *, uint64_t > &FieldOffsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &BaseOffsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &VirtualBaseOffsets) override
void FindExternalLexicalDecls(const clang::DeclContext *DC, llvm::function_ref< bool(clang::Decl::Kind)> IsKindWeWant, llvm::SmallVectorImpl< clang::Decl * > &Result) override
llvm::DenseMap< clang::Module *, unsigned > m_ids
void CompleteTagDecl(clang::TagDecl *)
bool LayoutRecordType(const clang::RecordDecl *record_decl, uint64_t &size, uint64_t &alignment, llvm::DenseMap< const clang::FieldDecl *, uint64_t > &field_offsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &base_offsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &vbase_offsets)
void CompleteObjCInterfaceDecl(clang::ObjCInterfaceDecl *)
A class that represents a running process on the host machine.