| //===-- ScriptInterpreterBridge.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_API_SCRIPTINTERPRETERBRIDGE_H |
| #define LLDB_SOURCE_API_SCRIPTINTERPRETERBRIDGE_H |
| |
| #include "lldb/API/SBDefines.h" |
| #include "lldb/Symbol/SymbolContext.h" |
| #include "lldb/Target/MemoryRegionInfo.h" |
| #include "lldb/Utility/Status.h" |
| #include "lldb/lldb-forward.h" |
| #include <optional> |
| |
| namespace lldb_private { |
| |
| class CommandReturnObject; |
| class Event; |
| |
| /// Unwraps the opaque internal object held by an SB (public API) instance, |
| /// for scripting-language plugins that need to convert values passed across |
| /// the script callback boundary back to their lldb_private form. Every SB |
| /// class this needs to reach into grants friendship to this class alone, so |
| /// that access to API internals stays confined to this single bridge rather |
| /// than spreading across the Interpreter layer. |
| class ScriptInterpreterBridge { |
| public: |
| static lldb::DataExtractorSP GetDataExtractor(const lldb::SBData &data); |
| |
| static Status GetStatus(const lldb::SBError &error); |
| |
| static Event *GetEvent(const lldb::SBEvent &event); |
| |
| static lldb::StreamSP GetStream(const lldb::SBStream &stream); |
| |
| static lldb::ThreadSP GetThread(const lldb::SBThread &thread); |
| |
| static lldb::StackFrameSP GetStackFrame(const lldb::SBFrame &frame); |
| |
| static SymbolContext GetSymbolContext(const lldb::SBSymbolContext &sym_ctx); |
| |
| static lldb::BreakpointSP GetBreakpoint(const lldb::SBBreakpoint &breakpoint); |
| |
| static lldb::BreakpointLocationSP |
| GetBreakpointLocation(const lldb::SBBreakpointLocation &break_loc); |
| |
| static CommandReturnObject * |
| GetCommandReturnObject(const lldb::SBCommandReturnObject &cmd_retobj); |
| |
| static lldb::DebuggerSP GetDebugger(const lldb::SBDebugger &debugger); |
| |
| static lldb::ProcessAttachInfoSP |
| GetProcessAttachInfo(const lldb::SBAttachInfo &attach_info); |
| |
| static lldb::ProcessLaunchInfoSP |
| GetProcessLaunchInfo(const lldb::SBLaunchInfo &launch_info); |
| |
| static std::optional<MemoryRegionInfo> |
| GetMemoryRegionInfo(const lldb::SBMemoryRegionInfo &mem_region); |
| |
| static lldb::ExecutionContextRefSP |
| GetExecutionContextRef(const lldb::SBExecutionContext &exe_ctx); |
| |
| static lldb::StackFrameListSP |
| GetStackFrameList(const lldb::SBFrameList &frame_list); |
| |
| static lldb::ValueObjectSP GetValueObject(const lldb::SBValue &value); |
| |
| static lldb::TargetSP GetTarget(const lldb::SBTarget &target); |
| }; |
| |
| } // namespace lldb_private |
| |
| #endif // LLDB_SOURCE_API_SCRIPTINTERPRETERBRIDGE_H |