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