1 //===-- DWARFASTParser.h ----------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef SymbolFileDWARF_DWARFASTParser_h_ 11 #define SymbolFileDWARF_DWARFASTParser_h_ 12 13 #include "DWARFDefines.h" 14 #include "lldb/Core/PluginInterface.h" 15 #include "lldb/Symbol/SymbolFile.h" 16 #include "lldb/Symbol/CompilerDecl.h" 17 #include "lldb/Symbol/CompilerDeclContext.h" 18 19 class DWARFDIE; 20 namespace lldb_private { 21 class CompileUnit; 22 class ExecutionContext; 23 } 24 class SymbolFileDWARF; 25 26 class DWARFASTParser { 27 public: ~DWARFASTParser()28 virtual ~DWARFASTParser() {} 29 30 virtual lldb::TypeSP ParseTypeFromDWARF(const lldb_private::SymbolContext &sc, 31 const DWARFDIE &die, 32 lldb_private::Log *log, 33 bool *type_is_new_ptr) = 0; 34 35 virtual lldb_private::Function * 36 ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit, 37 const DWARFDIE &die) = 0; 38 39 virtual bool 40 CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, 41 lldb_private::CompilerType &compiler_type) = 0; 42 43 virtual lldb_private::CompilerDecl 44 GetDeclForUIDFromDWARF(const DWARFDIE &die) = 0; 45 46 virtual lldb_private::CompilerDeclContext 47 GetDeclContextForUIDFromDWARF(const DWARFDIE &die) = 0; 48 49 virtual lldb_private::CompilerDeclContext 50 GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) = 0; 51 52 virtual std::vector<DWARFDIE> 53 GetDIEForDeclContext(lldb_private::CompilerDeclContext decl_context) = 0; 54 55 static llvm::Optional<lldb_private::SymbolFile::ArrayInfo> 56 ParseChildArrayInfo(const DWARFDIE &parent_die, 57 const lldb_private::ExecutionContext *exe_ctx = nullptr); 58 }; 59 60 #endif // SymbolFileDWARF_DWARFASTParser_h_ 61