1*f732157aSMed Ismail Bennani //===-- ScriptedStopHookPythonInterface.h -----------------------*- C++ -*-===// 2*f732157aSMed Ismail Bennani // 3*f732157aSMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*f732157aSMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 5*f732157aSMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*f732157aSMed Ismail Bennani // 7*f732157aSMed Ismail Bennani //===----------------------------------------------------------------------===// 8*f732157aSMed Ismail Bennani 9*f732157aSMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDSTOPHOOKPYTHONINTERFACE_H 10*f732157aSMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDSTOPHOOKPYTHONINTERFACE_H 11*f732157aSMed Ismail Bennani 12*f732157aSMed Ismail Bennani #include "lldb/Host/Config.h" 13*f732157aSMed Ismail Bennani #include "lldb/Interpreter/Interfaces/ScriptedStopHookInterface.h" 14*f732157aSMed Ismail Bennani 15*f732157aSMed Ismail Bennani #if LLDB_ENABLE_PYTHON 16*f732157aSMed Ismail Bennani 17*f732157aSMed Ismail Bennani #include "ScriptedPythonInterface.h" 18*f732157aSMed Ismail Bennani 19*f732157aSMed Ismail Bennani namespace lldb_private { 20*f732157aSMed Ismail Bennani class ScriptedStopHookPythonInterface : public ScriptedStopHookInterface, 21*f732157aSMed Ismail Bennani public ScriptedPythonInterface, 22*f732157aSMed Ismail Bennani public PluginInterface { 23*f732157aSMed Ismail Bennani public: 24*f732157aSMed Ismail Bennani ScriptedStopHookPythonInterface(ScriptInterpreterPythonImpl &interpreter); 25*f732157aSMed Ismail Bennani 26*f732157aSMed Ismail Bennani llvm::Expected<StructuredData::GenericSP> 27*f732157aSMed Ismail Bennani CreatePluginObject(llvm::StringRef class_name, lldb::TargetSP target_sp, 28*f732157aSMed Ismail Bennani const StructuredDataImpl &args_sp) override; 29*f732157aSMed Ismail Bennani 30*f732157aSMed Ismail Bennani llvm::SmallVector<AbstractMethodRequirement> 31*f732157aSMed Ismail Bennani GetAbstractMethodRequirements() const override { 32*f732157aSMed Ismail Bennani return llvm::SmallVector<AbstractMethodRequirement>({{"handle_stop", 2}}); 33*f732157aSMed Ismail Bennani } 34*f732157aSMed Ismail Bennani 35*f732157aSMed Ismail Bennani llvm::Expected<bool> HandleStop(ExecutionContext &exe_ctx, 36*f732157aSMed Ismail Bennani lldb::StreamSP &output_sp) override; 37*f732157aSMed Ismail Bennani 38*f732157aSMed Ismail Bennani static void Initialize(); 39*f732157aSMed Ismail Bennani 40*f732157aSMed Ismail Bennani static void Terminate(); 41*f732157aSMed Ismail Bennani 42*f732157aSMed Ismail Bennani static llvm::StringRef GetPluginNameStatic() { 43*f732157aSMed Ismail Bennani return "ScriptedStopHookPythonInterface"; 44*f732157aSMed Ismail Bennani } 45*f732157aSMed Ismail Bennani 46*f732157aSMed Ismail Bennani llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 47*f732157aSMed Ismail Bennani }; 48*f732157aSMed Ismail Bennani } // namespace lldb_private 49*f732157aSMed Ismail Bennani 50*f732157aSMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 51*f732157aSMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDSTOPHOOKPYTHONINTERFACE_H 52