summaryrefslogtreecommitdiffstats
path: root/lldb/include
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2019-12-23 13:08:22 +0100
committerRaphael Isemann <teemperor@gmail.com>2019-12-23 13:22:29 +0100
commit40bd809b6d5cfe69ffcb567245bc521b971a80eb (patch)
tree17400f18c67cebef19ecbf58da1f32ef78553587 /lldb/include
parent5bd9eee53d124d00885395f6f2d6a8c64deca188 (diff)
downloadbcm5719-llvm-40bd809b6d5cfe69ffcb567245bc521b971a80eb.tar.gz
bcm5719-llvm-40bd809b6d5cfe69ffcb567245bc521b971a80eb.zip
[lldb][NFC] Simplify ClangExternalASTSourceCallbacks
This class is only used by the ClangASTContext so we might as well simplify this whole logic by just passing a ClangASTContext instead of a list of callbacks and a void* pointer. If we ever need this to support other classes then we can define some interface that ClangASTContext implements but for now this isn't needed. I also removed any code for m_callback_find_by_name as this was always a nullptr in LLDB and removed all overriden implementations that just redefined the default no-op implementation that the ExternalASTSource provides. Also removed the assert.h workarounds.
Diffstat (limited to 'lldb/include')
-rw-r--r--lldb/include/lldb/Symbol/ClangASTContext.h10
-rw-r--r--lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h103
2 files changed, 9 insertions, 104 deletions
diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h
index 255a9af17bb..0658baa0cec 100644
--- a/lldb/include/lldb/Symbol/ClangASTContext.h
+++ b/lldb/include/lldb/Symbol/ClangASTContext.h
@@ -402,14 +402,12 @@ public:
PDBASTParser *GetPDBParser() override;
// ClangASTContext callbacks for external source lookups.
- static void CompleteTagDecl(void *baton, clang::TagDecl *);
+ void CompleteTagDecl(clang::TagDecl *);
- static void CompleteObjCInterfaceDecl(void *baton,
- clang::ObjCInterfaceDecl *);
+ void CompleteObjCInterfaceDecl(clang::ObjCInterfaceDecl *);
- static bool LayoutRecordType(
- void *baton, const clang::RecordDecl *record_decl, uint64_t &size,
- uint64_t &alignment,
+ 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,
diff --git a/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h b/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
index a2d4f8137a0..ed7e3b8ece7 100644
--- a/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
+++ b/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
@@ -9,86 +9,21 @@
#ifndef liblldb_ClangExternalASTSourceCallbacks_h_
#define liblldb_ClangExternalASTSourceCallbacks_h_
-#include <stdint.h>
-
-#include "clang/AST/CharUnits.h"
-#include "llvm/ADT/DenseMap.h"
-
-#include "lldb/Core/ClangForward.h"
#include "lldb/Symbol/ClangExternalASTSourceCommon.h"
-#include "lldb/Symbol/CompilerType.h"
-#include "lldb/lldb-enumerations.h"
namespace lldb_private {
+class ClangASTContext;
+
class ClangExternalASTSourceCallbacks : public ClangExternalASTSourceCommon {
public:
- typedef void (*CompleteTagDeclCallback)(void *baton, clang::TagDecl *);
- typedef void (*CompleteObjCInterfaceDeclCallback)(void *baton,
- clang::ObjCInterfaceDecl *);
- typedef void (*FindExternalVisibleDeclsByNameCallback)(
- void *baton, const clang::DeclContext *DC, clang::DeclarationName Name,
- llvm::SmallVectorImpl<clang::NamedDecl *> *results);
- typedef bool (*LayoutRecordTypeCallback)(
- void *baton, 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);
-
- ClangExternalASTSourceCallbacks(
- CompleteTagDeclCallback tag_decl_callback,
- CompleteObjCInterfaceDeclCallback objc_decl_callback,
- FindExternalVisibleDeclsByNameCallback find_by_name_callback,
- LayoutRecordTypeCallback layout_record_type_callback,
- void *callback_baton)
- : m_callback_tag_decl(tag_decl_callback),
- m_callback_objc_decl(objc_decl_callback),
- m_callback_find_by_name(find_by_name_callback),
- m_callback_layout_record_type(layout_record_type_callback),
- m_callback_baton(callback_baton) {}
-
- // clang::ExternalASTSource
-
- clang::Decl *GetExternalDecl(uint32_t ID) override {
- // This method only needs to be implemented if the AST source ever passes
- // back decl sets as VisibleDeclaration objects.
- return nullptr;
- }
-
- clang::Stmt *GetExternalDeclStmt(uint64_t Offset) override {
- // This operation is meant to be used via a LazyOffsetPtr. It only needs
- // to be implemented if the AST source uses methods like
- // FunctionDecl::setLazyBody when building decls.
- return nullptr;
- }
-
- clang::Selector GetExternalSelector(uint32_t ID) override {
- // This operation only needs to be implemented if the AST source returns
- // non-zero for GetNumKnownSelectors().
- return clang::Selector();
- }
-
- uint32_t GetNumExternalSelectors() override { return 0; }
-
- clang::CXXBaseSpecifier *
- GetExternalCXXBaseSpecifiers(uint64_t Offset) override {
- return nullptr;
- }
-
- virtual void MaterializeVisibleDecls(const clang::DeclContext *decl_ctx) {}
+ ClangExternalASTSourceCallbacks(ClangASTContext &ast) : m_ast(ast) {}
void FindExternalLexicalDecls(
const clang::DeclContext *DC,
llvm::function_ref<bool(clang::Decl::Kind)> IsKindWeWant,
llvm::SmallVectorImpl<clang::Decl *> &Result) override;
- bool
- FindExternalVisibleDeclsByName(const clang::DeclContext *decl_ctx,
- clang::DeclarationName decl_name) override;
-
void CompleteType(clang::TagDecl *tag_decl) override;
void CompleteType(clang::ObjCInterfaceDecl *objc_decl) override;
@@ -101,36 +36,8 @@ public:
llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
&VirtualBaseOffsets) override;
- void SetExternalSourceCallbacks(
- CompleteTagDeclCallback tag_decl_callback,
- CompleteObjCInterfaceDeclCallback objc_decl_callback,
- FindExternalVisibleDeclsByNameCallback find_by_name_callback,
- LayoutRecordTypeCallback layout_record_type_callback,
- void *callback_baton) {
- m_callback_tag_decl = tag_decl_callback;
- m_callback_objc_decl = objc_decl_callback;
- m_callback_find_by_name = find_by_name_callback;
- m_callback_layout_record_type = layout_record_type_callback;
- m_callback_baton = callback_baton;
- }
-
- void RemoveExternalSourceCallbacks(void *callback_baton) {
- if (callback_baton == m_callback_baton) {
- m_callback_tag_decl = nullptr;
- m_callback_objc_decl = nullptr;
- m_callback_find_by_name = nullptr;
- m_callback_layout_record_type = nullptr;
- }
- }
-
-protected:
- // Classes that inherit from ClangExternalASTSourceCallbacks can see and
- // modify these
- CompleteTagDeclCallback m_callback_tag_decl;
- CompleteObjCInterfaceDeclCallback m_callback_objc_decl;
- FindExternalVisibleDeclsByNameCallback m_callback_find_by_name;
- LayoutRecordTypeCallback m_callback_layout_record_type;
- void *m_callback_baton;
+private:
+ ClangASTContext &m_ast;
};
} // namespace lldb_private
OpenPOWER on IntegriCloud