1292932Sdim//===-- DWARFASTParser.h ----------------------------------------*- C++ -*-===//
2292932Sdim//
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
6292932Sdim//
7292932Sdim//===----------------------------------------------------------------------===//
8292932Sdim
9292932Sdim#ifndef SymbolFileDWARF_DWARFASTParser_h_
10292932Sdim#define SymbolFileDWARF_DWARFASTParser_h_
11292932Sdim
12292932Sdim#include "DWARFDefines.h"
13292932Sdim#include "lldb/Core/PluginInterface.h"
14344779Sdim#include "lldb/Symbol/SymbolFile.h"
15292932Sdim#include "lldb/Symbol/CompilerDecl.h"
16292932Sdim#include "lldb/Symbol/CompilerDeclContext.h"
17292932Sdim
18292932Sdimclass DWARFDIE;
19344779Sdimnamespace lldb_private {
20344779Sdimclass CompileUnit;
21344779Sdimclass ExecutionContext;
22344779Sdim}
23344779Sdimclass SymbolFileDWARF;
24292932Sdim
25314564Sdimclass DWARFASTParser {
26292932Sdimpublic:
27314564Sdim  virtual ~DWARFASTParser() {}
28292932Sdim
29314564Sdim  virtual lldb::TypeSP ParseTypeFromDWARF(const lldb_private::SymbolContext &sc,
30314564Sdim                                          const DWARFDIE &die,
31314564Sdim                                          bool *type_is_new_ptr) = 0;
32292932Sdim
33314564Sdim  virtual lldb_private::Function *
34344779Sdim  ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit,
35314564Sdim                         const DWARFDIE &die) = 0;
36292932Sdim
37314564Sdim  virtual bool
38314564Sdim  CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type,
39314564Sdim                        lldb_private::CompilerType &compiler_type) = 0;
40292932Sdim
41314564Sdim  virtual lldb_private::CompilerDecl
42314564Sdim  GetDeclForUIDFromDWARF(const DWARFDIE &die) = 0;
43292932Sdim
44314564Sdim  virtual lldb_private::CompilerDeclContext
45314564Sdim  GetDeclContextForUIDFromDWARF(const DWARFDIE &die) = 0;
46292932Sdim
47314564Sdim  virtual lldb_private::CompilerDeclContext
48314564Sdim  GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) = 0;
49292932Sdim
50360784Sdim  virtual void EnsureAllDIEsInDeclContextHaveBeenParsed(
51360784Sdim      lldb_private::CompilerDeclContext decl_context) = 0;
52344779Sdim
53344779Sdim  static llvm::Optional<lldb_private::SymbolFile::ArrayInfo>
54344779Sdim  ParseChildArrayInfo(const DWARFDIE &parent_die,
55344779Sdim                      const lldb_private::ExecutionContext *exe_ctx = nullptr);
56292932Sdim};
57292932Sdim
58314564Sdim#endif // SymbolFileDWARF_DWARFASTParser_h_
59