1 //===-- DWARFASTParser.h ----------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 11 12 #include "DWARFDefines.h" 13 #include "lldb/Core/PluginInterface.h" 14 #include "lldb/Symbol/SymbolFile.h" 15 #include "lldb/Symbol/CompilerDecl.h" 16 #include "lldb/Symbol/CompilerDeclContext.h" 17 18 class DWARFDIE; 19 namespace lldb_private { 20 class CompileUnit; 21 class ExecutionContext; 22 } 23 class SymbolFileDWARF; 24 25 class DWARFASTParser { 26 public: ~DWARFASTParser()27 virtual ~DWARFASTParser() {} 28 29 virtual lldb::TypeSP ParseTypeFromDWARF(const lldb_private::SymbolContext &sc, 30 const DWARFDIE &die, 31 bool *type_is_new_ptr) = 0; 32 33 virtual lldb_private::Function * 34 ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit, 35 const DWARFDIE &die) = 0; 36 37 virtual bool 38 CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, 39 lldb_private::CompilerType &compiler_type) = 0; 40 41 virtual lldb_private::CompilerDecl 42 GetDeclForUIDFromDWARF(const DWARFDIE &die) = 0; 43 44 virtual lldb_private::CompilerDeclContext 45 GetDeclContextForUIDFromDWARF(const DWARFDIE &die) = 0; 46 47 virtual lldb_private::CompilerDeclContext 48 GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) = 0; 49 50 virtual void EnsureAllDIEsInDeclContextHaveBeenParsed( 51 lldb_private::CompilerDeclContext decl_context) = 0; 52 53 static llvm::Optional<lldb_private::SymbolFile::ArrayInfo> 54 ParseChildArrayInfo(const DWARFDIE &parent_die, 55 const lldb_private::ExecutionContext *exe_ctx = nullptr); 56 }; 57 58 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H 59