135653324SMed Ismail Bennani //===-- ScriptedThreadPlanPythonInterface.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_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 1035653324SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 1135653324SMed Ismail Bennani 1235653324SMed Ismail Bennani #include "lldb/Host/Config.h" 1335653324SMed Ismail Bennani #include "lldb/Interpreter/Interfaces/ScriptedThreadPlanInterface.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 #include <optional> 2035653324SMed Ismail Bennani 2135653324SMed Ismail Bennani namespace lldb_private { 2235653324SMed Ismail Bennani class ScriptedThreadPlanPythonInterface : public ScriptedThreadPlanInterface, 2335653324SMed Ismail Bennani public ScriptedPythonInterface, 2435653324SMed Ismail Bennani public PluginInterface { 2535653324SMed Ismail Bennani public: 2635653324SMed Ismail Bennani ScriptedThreadPlanPythonInterface(ScriptInterpreterPythonImpl &interpreter); 2735653324SMed Ismail Bennani 2835653324SMed Ismail Bennani llvm::Expected<StructuredData::GenericSP> 2935653324SMed Ismail Bennani CreatePluginObject(const llvm::StringRef class_name, 3035653324SMed Ismail Bennani lldb::ThreadPlanSP thread_plan_sp, 3135653324SMed Ismail Bennani const StructuredDataImpl &args_sp) override; 3235653324SMed Ismail Bennani 33*21026073SMed Ismail Bennani llvm::SmallVector<AbstractMethodRequirement> 34*21026073SMed Ismail Bennani GetAbstractMethodRequirements() const override { 3535653324SMed Ismail Bennani return {}; 3635653324SMed Ismail Bennani } 3735653324SMed Ismail Bennani 3835653324SMed Ismail Bennani llvm::Expected<bool> ExplainsStop(Event *event) override; 3935653324SMed Ismail Bennani 4035653324SMed Ismail Bennani llvm::Expected<bool> ShouldStop(Event *event) override; 4135653324SMed Ismail Bennani 4235653324SMed Ismail Bennani llvm::Expected<bool> IsStale() override; 4335653324SMed Ismail Bennani 4435653324SMed Ismail Bennani lldb::StateType GetRunState() override; 4535653324SMed Ismail Bennani 4635653324SMed Ismail Bennani llvm::Error GetStopDescription(lldb::StreamSP &stream) override; 4735653324SMed Ismail Bennani 4835653324SMed Ismail Bennani static void Initialize(); 4935653324SMed Ismail Bennani 5035653324SMed Ismail Bennani static void Terminate(); 5135653324SMed Ismail Bennani 5235653324SMed Ismail Bennani static llvm::StringRef GetPluginNameStatic() { 5335653324SMed Ismail Bennani return "ScriptedThreadPlanPythonInterface"; 5435653324SMed Ismail Bennani } 5535653324SMed Ismail Bennani 5635653324SMed Ismail Bennani llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 5735653324SMed Ismail Bennani }; 5835653324SMed Ismail Bennani } // namespace lldb_private 5935653324SMed Ismail Bennani 6035653324SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 6135653324SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 62