1*5f757f3fSDimitry Andric //===-- ScriptedPlatformPythonInterface.h -----------------------*- C++ -*-===//
2*5f757f3fSDimitry Andric //
3*5f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*5f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*5f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*5f757f3fSDimitry Andric //
7*5f757f3fSDimitry Andric //===----------------------------------------------------------------------===//
8*5f757f3fSDimitry Andric 
9*5f757f3fSDimitry Andric #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H
10*5f757f3fSDimitry Andric #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H
11*5f757f3fSDimitry Andric 
12*5f757f3fSDimitry Andric #include "lldb/Host/Config.h"
13*5f757f3fSDimitry Andric 
14*5f757f3fSDimitry Andric #if LLDB_ENABLE_PYTHON
15*5f757f3fSDimitry Andric 
16*5f757f3fSDimitry Andric #include "ScriptedPythonInterface.h"
17*5f757f3fSDimitry Andric #include "lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h"
18*5f757f3fSDimitry Andric 
19*5f757f3fSDimitry Andric namespace lldb_private {
20*5f757f3fSDimitry Andric class ScriptedPlatformPythonInterface : public ScriptedPlatformInterface,
21*5f757f3fSDimitry Andric                                         public ScriptedPythonInterface {
22*5f757f3fSDimitry Andric public:
23*5f757f3fSDimitry Andric   ScriptedPlatformPythonInterface(ScriptInterpreterPythonImpl &interpreter);
24*5f757f3fSDimitry Andric 
25*5f757f3fSDimitry Andric   llvm::Expected<StructuredData::GenericSP>
26*5f757f3fSDimitry Andric   CreatePluginObject(const llvm::StringRef class_name,
27*5f757f3fSDimitry Andric                      ExecutionContext &exe_ctx,
28*5f757f3fSDimitry Andric                      StructuredData::DictionarySP args_sp,
29*5f757f3fSDimitry Andric                      StructuredData::Generic *script_obj = nullptr) override;
30*5f757f3fSDimitry Andric 
GetAbstractMethods()31*5f757f3fSDimitry Andric   llvm::SmallVector<llvm::StringLiteral> GetAbstractMethods() const override {
32*5f757f3fSDimitry Andric     return llvm::SmallVector<llvm::StringLiteral>(
33*5f757f3fSDimitry Andric         {"list_processes", "attach_to_process", "launch_process",
34*5f757f3fSDimitry Andric          "kill_process"});
35*5f757f3fSDimitry Andric   }
36*5f757f3fSDimitry Andric 
37*5f757f3fSDimitry Andric   StructuredData::DictionarySP ListProcesses() override;
38*5f757f3fSDimitry Andric 
39*5f757f3fSDimitry Andric   StructuredData::DictionarySP GetProcessInfo(lldb::pid_t) override;
40*5f757f3fSDimitry Andric 
41*5f757f3fSDimitry Andric   Status AttachToProcess(lldb::ProcessAttachInfoSP attach_info) override;
42*5f757f3fSDimitry Andric 
43*5f757f3fSDimitry Andric   Status LaunchProcess(lldb::ProcessLaunchInfoSP launch_info) override;
44*5f757f3fSDimitry Andric 
45*5f757f3fSDimitry Andric   Status KillProcess(lldb::pid_t pid) override;
46*5f757f3fSDimitry Andric };
47*5f757f3fSDimitry Andric } // namespace lldb_private
48*5f757f3fSDimitry Andric 
49*5f757f3fSDimitry Andric #endif // LLDB_ENABLE_PYTHON
50*5f757f3fSDimitry Andric #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H
51