diff options
| author | Raphael Isemann <teemperor@gmail.com> | 2019-12-23 13:08:22 +0100 |
|---|---|---|
| committer | Raphael Isemann <teemperor@gmail.com> | 2019-12-23 13:22:29 +0100 |
| commit | 40bd809b6d5cfe69ffcb567245bc521b971a80eb (patch) | |
| tree | 17400f18c67cebef19ecbf58da1f32ef78553587 /lldb/include | |
| parent | 5bd9eee53d124d00885395f6f2d6a8c64deca188 (diff) | |
| download | bcm5719-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.h | 10 | ||||
| -rw-r--r-- | lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h | 103 |
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 |

