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