mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-12 17:45:49 +08:00
Fixed: 1454724 Change-Id: Ideff961691d108176ebf09981d3665dffc81bca6 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4742599 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Philip Pfaffe <pfaffe@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
594 lines
19 KiB
C++
594 lines
19 KiB
C++
// Copyright 2023 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// THIS IS GENERATED CODE, DO NOT MODIFY!
|
|
// clang-format off
|
|
|
|
#ifndef EXTENSIONS_CXX_DEBUGGING_API_H_
|
|
#define EXTENSIONS_CXX_DEBUGGING_API_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <emscripten/val.h>
|
|
|
|
#include "llvm/ADT/Optional.h"
|
|
|
|
namespace symbols_backend {
|
|
namespace api {
|
|
// Error details
|
|
class Error {
|
|
public:
|
|
enum class Code {
|
|
kInternalError,
|
|
kProtocolError,
|
|
kModuleNotFoundError,
|
|
kEvalError
|
|
};
|
|
private:
|
|
Code code_ = {}; // An error code
|
|
std::string message_ = {}; // The error message
|
|
|
|
public:
|
|
Error() = default;
|
|
virtual ~Error() = default;
|
|
Code GetCode() const { return code_; }
|
|
Error &SetCode(Code value) {
|
|
code_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetMessage() const { return message_; }
|
|
Error &SetMessage(std::string value) {
|
|
message_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Offsets in raw modules
|
|
class RawLocationRange {
|
|
private:
|
|
std::string raw_module_id_ = {}; // Module identifier
|
|
int32_t start_offset_ = {}; // Start offset of the code range in the raw module
|
|
int32_t end_offset_ = {}; // Exclusive end offset of the code range in the raw module
|
|
|
|
public:
|
|
RawLocationRange() = default;
|
|
virtual ~RawLocationRange() = default;
|
|
std::string GetRawModuleId() const { return raw_module_id_; }
|
|
RawLocationRange &SetRawModuleId(std::string value) {
|
|
raw_module_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetStartOffset() const { return start_offset_; }
|
|
RawLocationRange &SetStartOffset(int32_t value) {
|
|
start_offset_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetEndOffset() const { return end_offset_; }
|
|
RawLocationRange &SetEndOffset(int32_t value) {
|
|
end_offset_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Offsets in raw modules
|
|
class RawLocation {
|
|
private:
|
|
std::string raw_module_id_ = {}; // Module identifier
|
|
int32_t code_offset_ = {}; // Offset of the location in the raw module
|
|
int32_t inline_frame_index_ = {}; // Index of inline call frame, 0 is top.
|
|
|
|
public:
|
|
RawLocation() = default;
|
|
virtual ~RawLocation() = default;
|
|
std::string GetRawModuleId() const { return raw_module_id_; }
|
|
RawLocation &SetRawModuleId(std::string value) {
|
|
raw_module_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetCodeOffset() const { return code_offset_; }
|
|
RawLocation &SetCodeOffset(int32_t value) {
|
|
code_offset_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetInlineFrameIndex() const { return inline_frame_index_; }
|
|
RawLocation &SetInlineFrameIndex(int32_t value) {
|
|
inline_frame_index_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Locations in source files
|
|
class SourceLocation {
|
|
private:
|
|
std::string raw_module_id_ = {}; // Module identifier
|
|
std::string source_file_ = {}; // Url of the source file
|
|
int32_t line_number_ = {}; // Line number of the location in the source file
|
|
int32_t column_number_ = {}; // Column number of the location in the source file
|
|
|
|
public:
|
|
SourceLocation() = default;
|
|
virtual ~SourceLocation() = default;
|
|
std::string GetRawModuleId() const { return raw_module_id_; }
|
|
SourceLocation &SetRawModuleId(std::string value) {
|
|
raw_module_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetSourceFile() const { return source_file_; }
|
|
SourceLocation &SetSourceFile(std::string value) {
|
|
source_file_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetLineNumber() const { return line_number_; }
|
|
SourceLocation &SetLineNumber(int32_t value) {
|
|
line_number_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetColumnNumber() const { return column_number_; }
|
|
SourceLocation &SetColumnNumber(int32_t value) {
|
|
column_number_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// A source language variable
|
|
class Variable {
|
|
public:
|
|
enum class Scope {
|
|
kLocal,
|
|
kParameter,
|
|
kGlobal
|
|
};
|
|
private:
|
|
Scope scope_ = {}; // Scope of the variable
|
|
std::string name_ = {}; // Name of the variable
|
|
std::string type_ = {}; // Type of the variable
|
|
std::vector<std::string> typedefs_ = {};
|
|
|
|
public:
|
|
Variable() = default;
|
|
virtual ~Variable() = default;
|
|
Scope GetScope() const { return scope_; }
|
|
Variable &SetScope(Scope value) {
|
|
scope_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetName() const { return name_; }
|
|
Variable &SetName(std::string value) {
|
|
name_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetType() const { return type_; }
|
|
Variable &SetType(std::string value) {
|
|
type_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::vector<std::string> GetTypedefs() const { return typedefs_; }
|
|
Variable &SetTypedefs(std::vector<std::string> value) {
|
|
typedefs_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
class FieldInfo {
|
|
private:
|
|
llvm::Optional<std::string> name_ = {};
|
|
int32_t offset_ = {};
|
|
std::string type_id_ = {};
|
|
|
|
public:
|
|
FieldInfo() = default;
|
|
virtual ~FieldInfo() = default;
|
|
llvm::Optional<std::string> GetName() const { return name_; }
|
|
FieldInfo &SetName(llvm::Optional<std::string> value) {
|
|
name_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetOffset() const { return offset_; }
|
|
FieldInfo &SetOffset(int32_t value) {
|
|
offset_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetTypeId() const { return type_id_; }
|
|
FieldInfo &SetTypeId(std::string value) {
|
|
type_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
class Enumerator {
|
|
private:
|
|
std::string name_ = {};
|
|
int64_t value_ = {};
|
|
std::string type_id_ = {};
|
|
|
|
public:
|
|
Enumerator() = default;
|
|
virtual ~Enumerator() = default;
|
|
std::string GetName() const { return name_; }
|
|
Enumerator &SetName(std::string value) {
|
|
name_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int64_t GetValue() const { return value_; }
|
|
Enumerator &SetValue(int64_t value) {
|
|
value_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetTypeId() const { return type_id_; }
|
|
Enumerator &SetTypeId(std::string value) {
|
|
type_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
class TypeInfo {
|
|
private:
|
|
std::vector<std::string> type_names_ = {};
|
|
std::string type_id_ = {};
|
|
int32_t alignment_ = {};
|
|
int32_t size_ = {};
|
|
bool can_expand_ = {};
|
|
bool has_value_ = {};
|
|
llvm::Optional<int32_t> array_size_ = {};
|
|
bool is_pointer_ = {};
|
|
std::vector<FieldInfo> members_ = {};
|
|
std::vector<Enumerator> enumerators_ = {};
|
|
|
|
public:
|
|
TypeInfo() = default;
|
|
virtual ~TypeInfo() = default;
|
|
std::vector<std::string> GetTypeNames() const { return type_names_; }
|
|
TypeInfo &SetTypeNames(std::vector<std::string> value) {
|
|
type_names_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::string GetTypeId() const { return type_id_; }
|
|
TypeInfo &SetTypeId(std::string value) {
|
|
type_id_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetAlignment() const { return alignment_; }
|
|
TypeInfo &SetAlignment(int32_t value) {
|
|
alignment_ = std::move(value);
|
|
return *this;
|
|
}
|
|
int32_t GetSize() const { return size_; }
|
|
TypeInfo &SetSize(int32_t value) {
|
|
size_ = std::move(value);
|
|
return *this;
|
|
}
|
|
bool GetCanExpand() const { return can_expand_; }
|
|
TypeInfo &SetCanExpand(bool value) {
|
|
can_expand_ = std::move(value);
|
|
return *this;
|
|
}
|
|
bool GetHasValue() const { return has_value_; }
|
|
TypeInfo &SetHasValue(bool value) {
|
|
has_value_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<int32_t> GetArraySize() const { return array_size_; }
|
|
TypeInfo &SetArraySize(llvm::Optional<int32_t> value) {
|
|
array_size_ = std::move(value);
|
|
return *this;
|
|
}
|
|
bool GetIsPointer() const { return is_pointer_; }
|
|
TypeInfo &SetIsPointer(bool value) {
|
|
is_pointer_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::vector<FieldInfo> GetMembers() const { return members_; }
|
|
TypeInfo &SetMembers(std::vector<FieldInfo> value) {
|
|
members_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::vector<Enumerator> GetEnumerators() const { return enumerators_; }
|
|
TypeInfo &SetEnumerators(std::vector<Enumerator> value) {
|
|
enumerators_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the AddRawModule command
|
|
class AddRawModuleResponse {
|
|
private:
|
|
std::vector<std::string> sources_ = {}; // The original source files the raw module was compiled from. Filenames are in URL format
|
|
std::vector<std::string> dwos_ = {}; // DWO filenames that might be lazily loaded. Used internally by the extension to set up emscripten filesystem.
|
|
llvm::Optional<Error> error_ = {}; // Error details if the raw module couldn't be handled
|
|
|
|
public:
|
|
AddRawModuleResponse() = default;
|
|
virtual ~AddRawModuleResponse() = default;
|
|
std::vector<std::string> GetSources() const { return sources_; }
|
|
AddRawModuleResponse &SetSources(std::vector<std::string> value) {
|
|
sources_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::vector<std::string> GetDwos() const { return dwos_; }
|
|
AddRawModuleResponse &SetDwos(std::vector<std::string> value) {
|
|
dwos_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
AddRawModuleResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the SourceLocationToRawLocation command
|
|
class SourceLocationToRawLocationResponse {
|
|
private:
|
|
std::vector<RawLocationRange> raw_location_ranges_ = {}; // The raw locations matching the source locations
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
SourceLocationToRawLocationResponse() = default;
|
|
virtual ~SourceLocationToRawLocationResponse() = default;
|
|
std::vector<RawLocationRange> GetRawLocationRanges() const { return raw_location_ranges_; }
|
|
SourceLocationToRawLocationResponse &SetRawLocationRanges(std::vector<RawLocationRange> value) {
|
|
raw_location_ranges_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
SourceLocationToRawLocationResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the RawLocationToSourceLocation command
|
|
class RawLocationToSourceLocationResponse {
|
|
private:
|
|
std::vector<SourceLocation> source_location_ = {}; // The source locations matching the raw locations
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
RawLocationToSourceLocationResponse() = default;
|
|
virtual ~RawLocationToSourceLocationResponse() = default;
|
|
std::vector<SourceLocation> GetSourceLocation() const { return source_location_; }
|
|
RawLocationToSourceLocationResponse &SetSourceLocation(std::vector<SourceLocation> value) {
|
|
source_location_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
RawLocationToSourceLocationResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the ListVariablesInScope command
|
|
class ListVariablesInScopeResponse {
|
|
private:
|
|
std::vector<Variable> variable_ = {}; // The variables present in the scope
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
ListVariablesInScopeResponse() = default;
|
|
virtual ~ListVariablesInScopeResponse() = default;
|
|
std::vector<Variable> GetVariable() const { return variable_; }
|
|
ListVariablesInScopeResponse &SetVariable(std::vector<Variable> value) {
|
|
variable_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
ListVariablesInScopeResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the GetFunctionInfo command
|
|
class GetFunctionInfoResponse {
|
|
private:
|
|
std::vector<std::string> function_names_ = {}; // A list of functions (multiple if inlined) starting with innermost.
|
|
std::vector<std::string> missing_symbol_files_ = {}; // A string representing a missing .dwo file.
|
|
llvm::Optional<Error> error_ = {}; // error details if the command failed
|
|
|
|
public:
|
|
GetFunctionInfoResponse() = default;
|
|
virtual ~GetFunctionInfoResponse() = default;
|
|
std::vector<std::string> GetFunctionNames() const { return function_names_; }
|
|
GetFunctionInfoResponse &SetFunctionNames(std::vector<std::string> value) {
|
|
function_names_ = std::move(value);
|
|
return *this;
|
|
}
|
|
std::vector<std::string> GetMissingSymbolFiles() const { return missing_symbol_files_; }
|
|
GetFunctionInfoResponse &SetMissingSymbolFiles(std::vector<std::string> value) {
|
|
missing_symbol_files_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
GetFunctionInfoResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the GetInlinedFunctionRanges command
|
|
class GetInlinedFunctionRangesResponse {
|
|
private:
|
|
std::vector<RawLocationRange> raw_location_ranges_ = {}; // The raw locations of the inlined function or empty
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
GetInlinedFunctionRangesResponse() = default;
|
|
virtual ~GetInlinedFunctionRangesResponse() = default;
|
|
std::vector<RawLocationRange> GetRawLocationRanges() const { return raw_location_ranges_; }
|
|
GetInlinedFunctionRangesResponse &SetRawLocationRanges(std::vector<RawLocationRange> value) {
|
|
raw_location_ranges_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
GetInlinedFunctionRangesResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the GetInlinedCalleesRanges command
|
|
class GetInlinedCalleesRangesResponse {
|
|
private:
|
|
std::vector<RawLocationRange> raw_location_ranges_ = {}; // The raw locations of any child inlined functions
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
GetInlinedCalleesRangesResponse() = default;
|
|
virtual ~GetInlinedCalleesRangesResponse() = default;
|
|
std::vector<RawLocationRange> GetRawLocationRanges() const { return raw_location_ranges_; }
|
|
GetInlinedCalleesRangesResponse &SetRawLocationRanges(std::vector<RawLocationRange> value) {
|
|
raw_location_ranges_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
GetInlinedCalleesRangesResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the GetMappedLines command
|
|
class GetMappedLinesResponse {
|
|
private:
|
|
std::vector<int32_t> _mapped_lines_ = {}; // Mapped lines
|
|
llvm::Optional<Error> error_ = {}; // Error details if the command failed
|
|
|
|
public:
|
|
GetMappedLinesResponse() = default;
|
|
virtual ~GetMappedLinesResponse() = default;
|
|
std::vector<int32_t> GetMappedLines() const { return _mapped_lines_; }
|
|
GetMappedLinesResponse &SetMappedLines(std::vector<int32_t> value) {
|
|
_mapped_lines_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
GetMappedLinesResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
// Return type of the EvaluateExpression command
|
|
class EvaluateExpressionResponse {
|
|
private:
|
|
std::vector<TypeInfo> type_infos_ = {};
|
|
TypeInfo root_ = {};
|
|
llvm::Optional<std::string> display_value_ = {};
|
|
llvm::Optional<int32_t> location_ = {};
|
|
llvm::Optional<int32_t> memory_address_ = {};
|
|
llvm::Optional<std::vector<int32_t>> data_ = {};
|
|
llvm::Optional<Error> error_ = {};
|
|
|
|
public:
|
|
EvaluateExpressionResponse() = default;
|
|
virtual ~EvaluateExpressionResponse() = default;
|
|
std::vector<TypeInfo> GetTypeInfos() const { return type_infos_; }
|
|
EvaluateExpressionResponse &SetTypeInfos(std::vector<TypeInfo> value) {
|
|
type_infos_ = std::move(value);
|
|
return *this;
|
|
}
|
|
TypeInfo GetRoot() const { return root_; }
|
|
EvaluateExpressionResponse &SetRoot(TypeInfo value) {
|
|
root_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<std::string> GetDisplayValue() const { return display_value_; }
|
|
EvaluateExpressionResponse &SetDisplayValue(llvm::Optional<std::string> value) {
|
|
display_value_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<int32_t> GetLocation() const { return location_; }
|
|
EvaluateExpressionResponse &SetLocation(llvm::Optional<int32_t> value) {
|
|
location_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<int32_t> GetMemoryAddress() const { return memory_address_; }
|
|
EvaluateExpressionResponse &SetMemoryAddress(llvm::Optional<int32_t> value) {
|
|
memory_address_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<std::vector<int32_t>> GetData() const { return data_; }
|
|
EvaluateExpressionResponse &SetData(llvm::Optional<std::vector<int32_t>> value) {
|
|
data_ = std::move(value);
|
|
return *this;
|
|
}
|
|
llvm::Optional<Error> GetError() const { return error_; }
|
|
EvaluateExpressionResponse &SetError(llvm::Optional<Error> value) {
|
|
error_ = std::move(value);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
|
|
class DWARFSymbolsApi {
|
|
public:
|
|
|
|
// Notify the plugin about a new script
|
|
virtual AddRawModuleResponse AddRawModule(
|
|
std::string raw_module_id, //A raw module identifier
|
|
std::string path //The path to the file with the wasm bytes
|
|
) = 0;
|
|
|
|
// Notify the plugin about a new script
|
|
virtual void RemoveRawModule(
|
|
std::string raw_module_id //The raw module identifier
|
|
) = 0;
|
|
|
|
// Find locations in raw modules from a location in a source file
|
|
virtual SourceLocationToRawLocationResponse SourceLocationToRawLocation(
|
|
std::string raw_module_id, //Module identifier
|
|
std::string source_file_url, //URL of the source file
|
|
int32_t line_number, //Line number of the location in the source file
|
|
int32_t column_number //Column number of the location in the source file
|
|
) = 0;
|
|
|
|
// Find locations in source files from a location in a raw module
|
|
virtual RawLocationToSourceLocationResponse RawLocationToSourceLocation(
|
|
std::string raw_module_id, //Module identifier
|
|
int32_t code_offset, //Offset of the location in the raw module
|
|
int32_t inline_frame_index //Index of inline frame
|
|
) = 0;
|
|
|
|
// List all variables in lexical scope at a location in a raw module
|
|
virtual ListVariablesInScopeResponse ListVariablesInScope(
|
|
std::string raw_module_id, //Module identifier
|
|
int32_t code_offset, //Offset of the location in the raw module
|
|
int32_t inline_frame_index //Index of inline frame
|
|
) = 0;
|
|
|
|
// Get function at location including inline frames.
|
|
virtual GetFunctionInfoResponse GetFunctionInfo(
|
|
std::string raw_module_id, //Module identifier
|
|
int32_t code_offset //Offset of the location in the raw module
|
|
) = 0;
|
|
|
|
// Get ranges for inlined function containing codeOffset.
|
|
virtual GetInlinedFunctionRangesResponse GetInlinedFunctionRanges(
|
|
std::string raw_module_id, //Module identifier
|
|
int32_t code_offset //Offset of the location in the raw module
|
|
) = 0;
|
|
|
|
// Get ranges for inlined functions called by function containing codeOffset.
|
|
virtual GetInlinedCalleesRangesResponse GetInlinedCalleesRanges(
|
|
std::string raw_module_id, //Module identifier
|
|
int32_t code_offset //Offset of the location in the raw module
|
|
) = 0;
|
|
|
|
virtual GetMappedLinesResponse GetMappedLines(
|
|
std::string raw_module_id, //Module identifier
|
|
std::string source_file_url //Source file URL
|
|
) = 0;
|
|
|
|
virtual EvaluateExpressionResponse EvaluateExpression(
|
|
RawLocation location,
|
|
std::string expression,
|
|
emscripten::val debug_proxy
|
|
) = 0;
|
|
};
|
|
} // namespace api
|
|
} // namespace symbols_backend
|
|
|
|
#endif // EXTENSIONS_CXX_DEBUGGING_API_H_
|