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