135653324SMed Ismail Bennani //===-- ScriptedPlatformPythonInterface.h -----------------------*- C++ -*-===// 235653324SMed Ismail Bennani // 335653324SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 435653324SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 535653324SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 635653324SMed Ismail Bennani // 735653324SMed Ismail Bennani //===----------------------------------------------------------------------===// 835653324SMed Ismail Bennani 935653324SMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H 1035653324SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H 1135653324SMed Ismail Bennani 1235653324SMed Ismail Bennani #include "lldb/Host/Config.h" 1335653324SMed Ismail Bennani #include "lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h" 1435653324SMed Ismail Bennani 1535653324SMed Ismail Bennani #if LLDB_ENABLE_PYTHON 1635653324SMed Ismail Bennani 1735653324SMed Ismail Bennani #include "ScriptedPythonInterface.h" 1835653324SMed Ismail Bennani 1935653324SMed Ismail Bennani namespace lldb_private { 2035653324SMed Ismail Bennani class ScriptedPlatformPythonInterface : public ScriptedPlatformInterface, 2135653324SMed Ismail Bennani public ScriptedPythonInterface, 2235653324SMed Ismail Bennani public PluginInterface { 2335653324SMed Ismail Bennani public: 2435653324SMed Ismail Bennani ScriptedPlatformPythonInterface(ScriptInterpreterPythonImpl &interpreter); 2535653324SMed Ismail Bennani 2635653324SMed Ismail Bennani llvm::Expected<StructuredData::GenericSP> 2735653324SMed Ismail Bennani CreatePluginObject(const llvm::StringRef class_name, 2835653324SMed Ismail Bennani ExecutionContext &exe_ctx, 2935653324SMed Ismail Bennani StructuredData::DictionarySP args_sp, 3035653324SMed Ismail Bennani StructuredData::Generic *script_obj = nullptr) override; 3135653324SMed Ismail Bennani 32*21026073SMed Ismail Bennani llvm::SmallVector<AbstractMethodRequirement> 33*21026073SMed Ismail Bennani GetAbstractMethodRequirements() const override { 34*21026073SMed Ismail Bennani return llvm::SmallVector<AbstractMethodRequirement>( 35*21026073SMed Ismail Bennani {{"list_processes"}, 36*21026073SMed Ismail Bennani {"attach_to_process", 2}, 37*21026073SMed Ismail Bennani {"launch_process", 2}, 38*21026073SMed Ismail Bennani {"kill_process", 2}}); 3935653324SMed Ismail Bennani } 4035653324SMed Ismail Bennani 4135653324SMed Ismail Bennani StructuredData::DictionarySP ListProcesses() override; 4235653324SMed Ismail Bennani 4335653324SMed Ismail Bennani StructuredData::DictionarySP GetProcessInfo(lldb::pid_t) override; 4435653324SMed Ismail Bennani 4535653324SMed Ismail Bennani Status AttachToProcess(lldb::ProcessAttachInfoSP attach_info) override; 4635653324SMed Ismail Bennani 4735653324SMed Ismail Bennani Status LaunchProcess(lldb::ProcessLaunchInfoSP launch_info) override; 4835653324SMed Ismail Bennani 4935653324SMed Ismail Bennani Status KillProcess(lldb::pid_t pid) override; 5035653324SMed Ismail Bennani 5135653324SMed Ismail Bennani static void Initialize(); 5235653324SMed Ismail Bennani 5335653324SMed Ismail Bennani static void Terminate(); 5435653324SMed Ismail Bennani 5535653324SMed Ismail Bennani static llvm::StringRef GetPluginNameStatic() { 5635653324SMed Ismail Bennani return "ScriptedPlatformPythonInterface"; 5735653324SMed Ismail Bennani } 5835653324SMed Ismail Bennani 5935653324SMed Ismail Bennani llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 6035653324SMed Ismail Bennani }; 6135653324SMed Ismail Bennani } // namespace lldb_private 6235653324SMed Ismail Bennani 6335653324SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 6435653324SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPLATFORMPYTHONINTERFACE_H 65