1*1f6a57c1SMed Ismail Bennani //===-- ScriptedProcessPythonInterface.h ------------------------*- C++ -*-===// 2*1f6a57c1SMed Ismail Bennani // 3*1f6a57c1SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*1f6a57c1SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 5*1f6a57c1SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*1f6a57c1SMed Ismail Bennani // 7*1f6a57c1SMed Ismail Bennani //===----------------------------------------------------------------------===// 8*1f6a57c1SMed Ismail Bennani 9*1f6a57c1SMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 10*1f6a57c1SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 11*1f6a57c1SMed Ismail Bennani 12*1f6a57c1SMed Ismail Bennani #include "lldb/Host/Config.h" 13*1f6a57c1SMed Ismail Bennani 14*1f6a57c1SMed Ismail Bennani #if LLDB_ENABLE_PYTHON 15*1f6a57c1SMed Ismail Bennani 16*1f6a57c1SMed Ismail Bennani #include "lldb/Interpreter/ScriptedProcessInterface.h" 17*1f6a57c1SMed Ismail Bennani 18*1f6a57c1SMed Ismail Bennani namespace lldb_private { 19*1f6a57c1SMed Ismail Bennani class ScriptInterpreterPythonImpl; 20*1f6a57c1SMed Ismail Bennani class ScriptedProcessPythonInterface : public ScriptedProcessInterface { 21*1f6a57c1SMed Ismail Bennani public: 22*1f6a57c1SMed Ismail Bennani ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter) 23*1f6a57c1SMed Ismail Bennani : ScriptedProcessInterface(), m_interpreter(interpreter) {} 24*1f6a57c1SMed Ismail Bennani 25*1f6a57c1SMed Ismail Bennani StructuredData::GenericSP 26*1f6a57c1SMed Ismail Bennani CreatePluginObject(const llvm::StringRef class_name, lldb::TargetSP target_sp, 27*1f6a57c1SMed Ismail Bennani StructuredData::DictionarySP args_sp) override; 28*1f6a57c1SMed Ismail Bennani 29*1f6a57c1SMed Ismail Bennani Status Launch() override; 30*1f6a57c1SMed Ismail Bennani 31*1f6a57c1SMed Ismail Bennani Status Resume() override; 32*1f6a57c1SMed Ismail Bennani 33*1f6a57c1SMed Ismail Bennani lldb::MemoryRegionInfoSP 34*1f6a57c1SMed Ismail Bennani GetMemoryRegionContainingAddress(lldb::addr_t address) override; 35*1f6a57c1SMed Ismail Bennani 36*1f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) override; 37*1f6a57c1SMed Ismail Bennani 38*1f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) override; 39*1f6a57c1SMed Ismail Bennani 40*1f6a57c1SMed Ismail Bennani lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size, 41*1f6a57c1SMed Ismail Bennani Status &error) override; 42*1f6a57c1SMed Ismail Bennani 43*1f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetLoadedImages() override; 44*1f6a57c1SMed Ismail Bennani 45*1f6a57c1SMed Ismail Bennani lldb::pid_t GetProcessID() override; 46*1f6a57c1SMed Ismail Bennani 47*1f6a57c1SMed Ismail Bennani bool IsAlive() override; 48*1f6a57c1SMed Ismail Bennani 49*1f6a57c1SMed Ismail Bennani protected: 50*1f6a57c1SMed Ismail Bennani size_t GetGenericInteger(llvm::StringRef method_name); 51*1f6a57c1SMed Ismail Bennani Status LaunchOrResume(llvm::StringRef method_name); 52*1f6a57c1SMed Ismail Bennani 53*1f6a57c1SMed Ismail Bennani private: 54*1f6a57c1SMed Ismail Bennani // The lifetime is managed by the ScriptInterpreter 55*1f6a57c1SMed Ismail Bennani ScriptInterpreterPythonImpl &m_interpreter; 56*1f6a57c1SMed Ismail Bennani StructuredData::GenericSP m_object_instance_sp; 57*1f6a57c1SMed Ismail Bennani }; 58*1f6a57c1SMed Ismail Bennani } // namespace lldb_private 59*1f6a57c1SMed Ismail Bennani 60*1f6a57c1SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 61*1f6a57c1SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 62