1 //===-- ScriptedProcessPythonInterface.h ------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H
10 #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H
12 #include "lldb/Host/Config.h"
13 #include "lldb/Interpreter/Interfaces/ScriptedProcessInterface.h"
15 #if LLDB_ENABLE_PYTHON
17 #include "ScriptedPythonInterface.h"
21 namespace lldb_private
{
22 class ScriptedProcessPythonInterface
: public ScriptedProcessInterface
,
23 public ScriptedPythonInterface
,
24 public PluginInterface
{
26 ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl
&interpreter
);
28 llvm::Expected
<StructuredData::GenericSP
>
29 CreatePluginObject(const llvm::StringRef class_name
,
30 ExecutionContext
&exe_ctx
,
31 StructuredData::DictionarySP args_sp
,
32 StructuredData::Generic
*script_obj
= nullptr) override
;
34 llvm::SmallVector
<AbstractMethodRequirement
>
35 GetAbstractMethodRequirements() const override
{
36 return llvm::SmallVector
<AbstractMethodRequirement
>(
37 {{"read_memory_at_address", 4},
39 {"get_scripted_thread_plugin"}});
42 StructuredData::DictionarySP
GetCapabilities() override
;
44 Status
Attach(const ProcessAttachInfo
&attach_info
) override
;
46 Status
Launch() override
;
48 Status
Resume() override
;
50 std::optional
<MemoryRegionInfo
>
51 GetMemoryRegionContainingAddress(lldb::addr_t address
,
52 Status
&error
) override
;
54 StructuredData::DictionarySP
GetThreadsInfo() override
;
56 bool CreateBreakpoint(lldb::addr_t addr
, Status
&error
) override
;
58 lldb::DataExtractorSP
ReadMemoryAtAddress(lldb::addr_t address
, size_t size
,
59 Status
&error
) override
;
61 lldb::offset_t
WriteMemoryAtAddress(lldb::addr_t addr
,
62 lldb::DataExtractorSP data_sp
,
63 Status
&error
) override
;
65 StructuredData::ArraySP
GetLoadedImages() override
;
67 lldb::pid_t
GetProcessID() override
;
69 bool IsAlive() override
;
71 std::optional
<std::string
> GetScriptedThreadPluginName() override
;
73 StructuredData::DictionarySP
GetMetadata() override
;
75 static void Initialize();
77 static void Terminate();
79 static llvm::StringRef
GetPluginNameStatic() {
80 return "ScriptedProcessPythonInterface";
83 llvm::StringRef
GetPluginName() override
{ return GetPluginNameStatic(); }
86 lldb::ScriptedThreadInterfaceSP
CreateScriptedThreadInterface() override
;
88 } // namespace lldb_private
90 #endif // LLDB_ENABLE_PYTHON
91 #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H