1254721Semaste//===-- ClangExternalASTSourceCallbacks.h -----------------------*- C++ -*-===//
2254721Semaste//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6254721Semaste//
7254721Semaste//===----------------------------------------------------------------------===//
8254721Semaste
9254721Semaste#ifndef liblldb_ClangExternalASTSourceCallbacks_h_
10254721Semaste#define liblldb_ClangExternalASTSourceCallbacks_h_
11254721Semaste
12360784Sdim#include "lldb/Symbol/ClangASTContext.h"
13360784Sdim#include "clang/AST/ExternalASTSource.h"
14254721Semaste
15360784Sdimnamespace lldb_private {
16254721Semaste
17360784Sdimclass ClangASTContext;
18254721Semaste
19360784Sdimclass ClangExternalASTSourceCallbacks : public clang::ExternalASTSource {
20254721Semastepublic:
21360784Sdim  ClangExternalASTSourceCallbacks(ClangASTContext &ast) : m_ast(ast) {}
22254721Semaste
23314564Sdim  void FindExternalLexicalDecls(
24314564Sdim      const clang::DeclContext *DC,
25314564Sdim      llvm::function_ref<bool(clang::Decl::Kind)> IsKindWeWant,
26314564Sdim      llvm::SmallVectorImpl<clang::Decl *> &Result) override;
27288943Sdim
28314564Sdim  void CompleteType(clang::TagDecl *tag_decl) override;
29296417Sdim
30314564Sdim  void CompleteType(clang::ObjCInterfaceDecl *objc_decl) override;
31254721Semaste
32314564Sdim  bool layoutRecordType(
33314564Sdim      const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,
34314564Sdim      llvm::DenseMap<const clang::FieldDecl *, uint64_t> &FieldOffsets,
35314564Sdim      llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
36314564Sdim          &BaseOffsets,
37314564Sdim      llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
38314564Sdim          &VirtualBaseOffsets) override;
39314564Sdim
40360784Sdimprivate:
41360784Sdim  ClangASTContext &m_ast;
42254721Semaste};
43254721Semaste
44254721Semaste} // namespace lldb_private
45254721Semaste
46296417Sdim#endif // liblldb_ClangExternalASTSourceCallbacks_h_
47