1ac9a064cSDimitry Andric //===-- ScriptedThreadPlanPythonInterface.h ---------------------*- C++ -*-===// 2ac9a064cSDimitry Andric // 3ac9a064cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4ac9a064cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5ac9a064cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6ac9a064cSDimitry Andric // 7ac9a064cSDimitry Andric //===----------------------------------------------------------------------===// 8ac9a064cSDimitry Andric 9ac9a064cSDimitry Andric #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 10ac9a064cSDimitry Andric #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 11ac9a064cSDimitry Andric 12ac9a064cSDimitry Andric #include "lldb/Host/Config.h" 13ac9a064cSDimitry Andric 14ac9a064cSDimitry Andric #if LLDB_ENABLE_PYTHON 15ac9a064cSDimitry Andric 16ac9a064cSDimitry Andric #include "ScriptedPythonInterface.h" 17ac9a064cSDimitry Andric #include "lldb/Interpreter/Interfaces/ScriptedThreadPlanInterface.h" 18ac9a064cSDimitry Andric #include <optional> 19ac9a064cSDimitry Andric 20ac9a064cSDimitry Andric namespace lldb_private { 21ac9a064cSDimitry Andric class ScriptedThreadPlanPythonInterface : public ScriptedThreadPlanInterface, 22ac9a064cSDimitry Andric public ScriptedPythonInterface { 23ac9a064cSDimitry Andric public: 24ac9a064cSDimitry Andric ScriptedThreadPlanPythonInterface(ScriptInterpreterPythonImpl &interpreter); 25ac9a064cSDimitry Andric 26ac9a064cSDimitry Andric llvm::Expected<StructuredData::GenericSP> 27ac9a064cSDimitry Andric CreatePluginObject(const llvm::StringRef class_name, 28ac9a064cSDimitry Andric lldb::ThreadPlanSP thread_plan_sp, 29ac9a064cSDimitry Andric const StructuredDataImpl &args_sp) override; 30ac9a064cSDimitry Andric GetAbstractMethods()31ac9a064cSDimitry Andric llvm::SmallVector<llvm::StringLiteral> GetAbstractMethods() const override { 32ac9a064cSDimitry Andric return {}; 33ac9a064cSDimitry Andric } 34ac9a064cSDimitry Andric 35ac9a064cSDimitry Andric llvm::Expected<bool> ExplainsStop(Event *event) override; 36ac9a064cSDimitry Andric 37ac9a064cSDimitry Andric llvm::Expected<bool> ShouldStop(Event *event) override; 38ac9a064cSDimitry Andric 39ac9a064cSDimitry Andric llvm::Expected<bool> IsStale() override; 40ac9a064cSDimitry Andric 41ac9a064cSDimitry Andric lldb::StateType GetRunState() override; 42ac9a064cSDimitry Andric 43ac9a064cSDimitry Andric llvm::Error GetStopDescription(lldb::StreamSP &stream) override; 44ac9a064cSDimitry Andric }; 45ac9a064cSDimitry Andric } // namespace lldb_private 46ac9a064cSDimitry Andric 47ac9a064cSDimitry Andric #endif // LLDB_ENABLE_PYTHON 48ac9a064cSDimitry Andric #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPLANPYTHONINTERFACE_H 49