177374d3bSMed Ismail Bennani //===-- ScriptedThreadPythonInterface.h ------------------------*- C++ -*-===// 277374d3bSMed Ismail Bennani // 377374d3bSMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 477374d3bSMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 577374d3bSMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 677374d3bSMed Ismail Bennani // 777374d3bSMed Ismail Bennani //===----------------------------------------------------------------------===// 877374d3bSMed Ismail Bennani 977374d3bSMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPYTHONINTERFACE_H 1077374d3bSMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPYTHONINTERFACE_H 1177374d3bSMed Ismail Bennani 1277374d3bSMed Ismail Bennani #include "lldb/Host/Config.h" 1377374d3bSMed Ismail Bennani 1477374d3bSMed Ismail Bennani #if LLDB_ENABLE_PYTHON 1577374d3bSMed Ismail Bennani 1677374d3bSMed Ismail Bennani #include "ScriptedPythonInterface.h" 1777374d3bSMed Ismail Bennani #include "lldb/Interpreter/Interfaces/ScriptedThreadInterface.h" 1877374d3bSMed Ismail Bennani #include <optional> 1977374d3bSMed Ismail Bennani 2077374d3bSMed Ismail Bennani namespace lldb_private { 2177374d3bSMed Ismail Bennani class ScriptedThreadPythonInterface : public ScriptedThreadInterface, 2277374d3bSMed Ismail Bennani public ScriptedPythonInterface { 2377374d3bSMed Ismail Bennani public: 2477374d3bSMed Ismail Bennani ScriptedThreadPythonInterface(ScriptInterpreterPythonImpl &interpreter); 2577374d3bSMed Ismail Bennani 26f22d82ceSMed Ismail Bennani llvm::Expected<StructuredData::GenericSP> 2777374d3bSMed Ismail Bennani CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, 2877374d3bSMed Ismail Bennani StructuredData::DictionarySP args_sp, 2977374d3bSMed Ismail Bennani StructuredData::Generic *script_obj = nullptr) override; 3077374d3bSMed Ismail Bennani 31*21026073SMed Ismail Bennani llvm::SmallVector<AbstractMethodRequirement> 32*21026073SMed Ismail Bennani GetAbstractMethodRequirements() const override { 33*21026073SMed Ismail Bennani return llvm::SmallVector<AbstractMethodRequirement>( 34*21026073SMed Ismail Bennani {{"get_stop_reason"}, {"get_register_context"}}); 350a211446SMed Ismail Bennani } 360a211446SMed Ismail Bennani 3777374d3bSMed Ismail Bennani lldb::tid_t GetThreadID() override; 3877374d3bSMed Ismail Bennani 3977374d3bSMed Ismail Bennani std::optional<std::string> GetName() override; 4077374d3bSMed Ismail Bennani 4177374d3bSMed Ismail Bennani lldb::StateType GetState() override; 4277374d3bSMed Ismail Bennani 4377374d3bSMed Ismail Bennani std::optional<std::string> GetQueue() override; 4477374d3bSMed Ismail Bennani 4577374d3bSMed Ismail Bennani StructuredData::DictionarySP GetStopReason() override; 4677374d3bSMed Ismail Bennani 4777374d3bSMed Ismail Bennani StructuredData::ArraySP GetStackFrames() override; 4877374d3bSMed Ismail Bennani 4977374d3bSMed Ismail Bennani StructuredData::DictionarySP GetRegisterInfo() override; 5077374d3bSMed Ismail Bennani 5177374d3bSMed Ismail Bennani std::optional<std::string> GetRegisterContext() override; 5277374d3bSMed Ismail Bennani 5377374d3bSMed Ismail Bennani StructuredData::ArraySP GetExtendedInfo() override; 5477374d3bSMed Ismail Bennani }; 5577374d3bSMed Ismail Bennani } // namespace lldb_private 5677374d3bSMed Ismail Bennani 5777374d3bSMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 5877374d3bSMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDTHREADPYTHONINTERFACE_H 59