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});
73 std::optional<clang::ASTSourceDescriptor>
75 if (clang::Module *module =
getModule(
id))