| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef EXTENSIONS_CXX_DEBUGGING_EXPRESSIONS_H_ |
| #define EXTENSIONS_CXX_DEBUGGING_EXPRESSIONS_H_ |
| |
| #include "lldb/Symbol/CompilerType.h" |
| #include "llvm/ADT/StringRef.h" |
| #include "llvm/Support/Error.h" |
| #include "llvm/Support/raw_ostream.h" |
| |
| #include <variant> |
| |
| namespace symbols_backend { |
| namespace api { |
| class DebuggerProxy; |
| } |
| class WasmModule; |
| |
| struct ExpressionResult { |
| lldb_private::CompilerType type; |
| std::variant<std::monostate, |
| bool, |
| int8_t, |
| uint8_t, |
| int16_t, |
| uint16_t, |
| int32_t, |
| uint32_t, |
| int64_t, |
| uint64_t, |
| float, |
| double, |
| void*, |
| std::nullptr_t> |
| value; |
| llvm::Optional<size_t> address; |
| }; |
| |
| llvm::Expected<ExpressionResult> InterpretExpression( |
| const WasmModule& module, |
| lldb_private::TypeSystem& type_system, |
| lldb_private::SymbolContext& sc, |
| size_t frame_offset, |
| size_t inline_frame_index, |
| lldb_private::Address addr, |
| llvm::StringRef expression, |
| const api::DebuggerProxy& proxy); |
| |
| } // namespace symbols_backend |
| |
| #endif // EXTENSIONS_CXX_DEBUGGING_EXPRESSIONS_H_ |