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