| //===-- 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 lldb::ThreadPlanSP | |
| GetThreadPlan(const lldb::SBThreadPlan &thread_plan); | |
| 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 |