| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 
 | //===-- SymbolFileJSON.h ----------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H
#include <map>
#include <optional>
#include <vector>
#include "lldb/Symbol/CompileUnit.h"
#include "lldb/Symbol/SymbolFile.h"
namespace lldb_private {
class SymbolFileJSON : public lldb_private::SymbolFileCommon {
  /// LLVM RTTI support.
  static char ID;
public:
  /// LLVM RTTI support.
  /// \{
  bool isA(const void *ClassID) const override {
    return ClassID == &ID || SymbolFileCommon::isA(ClassID);
  }
  static bool classof(const SymbolFile *obj) { return obj->isA(&ID); }
  /// \}
  SymbolFileJSON(lldb::ObjectFileSP objfile_sp);
  static void Initialize();
  static void Terminate();
  static llvm::StringRef GetPluginNameStatic() { return "JSON"; }
  static llvm::StringRef GetPluginDescriptionStatic();
  static lldb_private::SymbolFile *
  CreateInstance(lldb::ObjectFileSP objfile_sp);
  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
  uint32_t CalculateAbilities() override;
  lldb::LanguageType ParseLanguage(CompileUnit &comp_unit) override {
    return lldb::eLanguageTypeUnknown;
  }
  size_t ParseFunctions(CompileUnit &comp_unit) override { return 0; }
  bool ParseLineTable(CompileUnit &comp_unit) override { return false; }
  bool ParseDebugMacros(CompileUnit &comp_unit) override { return false; }
  bool ParseSupportFiles(CompileUnit &comp_unit,
                         SupportFileList &support_files) override {
    return false;
  }
  size_t ParseTypes(CompileUnit &cu) override { return 0; }
  bool ParseImportedModules(
      const SymbolContext &sc,
      std::vector<lldb_private::SourceModule> &imported_modules) override {
    return false;
  }
  size_t ParseBlocksRecursive(Function &func) override { return 0; }
  size_t ParseVariablesForContext(const SymbolContext &sc) override {
    return 0;
  }
  uint32_t CalculateNumCompileUnits() override { return 0; }
  lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override;
  Type *ResolveTypeUID(lldb::user_id_t type_uid) override { return nullptr; }
  std::optional<ArrayInfo> GetDynamicArrayInfoForUID(
      lldb::user_id_t type_uid,
      const lldb_private::ExecutionContext *exe_ctx) override {
    return std::nullopt;
  }
  bool CompleteType(CompilerType &compiler_type) override { return false; }
  uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr,
                                lldb::SymbolContextItem resolve_scope,
                                lldb_private::SymbolContext &sc) override;
  void GetTypes(lldb_private::SymbolContextScope *sc_scope,
                lldb::TypeClass type_mask,
                lldb_private::TypeList &type_list) override;
  void AddSymbols(Symtab &symtab) override;
private:
  lldb::addr_t GetBaseFileAddress();
  std::vector<std::pair<uint64_t, std::string>> m_symbols;
};
} // namespace lldb_private
#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H
 |