11f6a57c1SMed Ismail Bennani //===-- ScriptedProcessPythonInterface.h ------------------------*- C++ -*-===// 21f6a57c1SMed Ismail Bennani // 31f6a57c1SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41f6a57c1SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 51f6a57c1SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61f6a57c1SMed Ismail Bennani // 71f6a57c1SMed Ismail Bennani //===----------------------------------------------------------------------===// 81f6a57c1SMed Ismail Bennani 91f6a57c1SMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 101f6a57c1SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 111f6a57c1SMed Ismail Bennani 121f6a57c1SMed Ismail Bennani #include "lldb/Host/Config.h" 131f6a57c1SMed Ismail Bennani 141f6a57c1SMed Ismail Bennani #if LLDB_ENABLE_PYTHON 151f6a57c1SMed Ismail Bennani 161f6a57c1SMed Ismail Bennani #include "lldb/Interpreter/ScriptedProcessInterface.h" 171f6a57c1SMed Ismail Bennani 181f6a57c1SMed Ismail Bennani namespace lldb_private { 191f6a57c1SMed Ismail Bennani class ScriptInterpreterPythonImpl; 201f6a57c1SMed Ismail Bennani class ScriptedProcessPythonInterface : public ScriptedProcessInterface { 211f6a57c1SMed Ismail Bennani public: 221f6a57c1SMed Ismail Bennani ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter) 231f6a57c1SMed Ismail Bennani : ScriptedProcessInterface(), m_interpreter(interpreter) {} 241f6a57c1SMed Ismail Bennani 251f6a57c1SMed Ismail Bennani StructuredData::GenericSP 261f6a57c1SMed Ismail Bennani CreatePluginObject(const llvm::StringRef class_name, lldb::TargetSP target_sp, 271f6a57c1SMed Ismail Bennani StructuredData::DictionarySP args_sp) override; 281f6a57c1SMed Ismail Bennani 291f6a57c1SMed Ismail Bennani Status Launch() override; 301f6a57c1SMed Ismail Bennani 311f6a57c1SMed Ismail Bennani Status Resume() override; 321f6a57c1SMed Ismail Bennani 33*312b43daSMed Ismail Bennani bool ShouldStop() override; 34*312b43daSMed Ismail Bennani 35*312b43daSMed Ismail Bennani Status Stop() override; 36*312b43daSMed Ismail Bennani 371f6a57c1SMed Ismail Bennani lldb::MemoryRegionInfoSP 381f6a57c1SMed Ismail Bennani GetMemoryRegionContainingAddress(lldb::addr_t address) override; 391f6a57c1SMed Ismail Bennani 401f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) override; 411f6a57c1SMed Ismail Bennani 421f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) override; 431f6a57c1SMed Ismail Bennani 441f6a57c1SMed Ismail Bennani lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size, 451f6a57c1SMed Ismail Bennani Status &error) override; 461f6a57c1SMed Ismail Bennani 471f6a57c1SMed Ismail Bennani StructuredData::DictionarySP GetLoadedImages() override; 481f6a57c1SMed Ismail Bennani 491f6a57c1SMed Ismail Bennani lldb::pid_t GetProcessID() override; 501f6a57c1SMed Ismail Bennani 511f6a57c1SMed Ismail Bennani bool IsAlive() override; 521f6a57c1SMed Ismail Bennani 531f6a57c1SMed Ismail Bennani protected: 541f6a57c1SMed Ismail Bennani size_t GetGenericInteger(llvm::StringRef method_name); 55*312b43daSMed Ismail Bennani Status GetStatusFromMethod(llvm::StringRef method_name); 561f6a57c1SMed Ismail Bennani 571f6a57c1SMed Ismail Bennani private: 581f6a57c1SMed Ismail Bennani // The lifetime is managed by the ScriptInterpreter 591f6a57c1SMed Ismail Bennani ScriptInterpreterPythonImpl &m_interpreter; 601f6a57c1SMed Ismail Bennani StructuredData::GenericSP m_object_instance_sp; 611f6a57c1SMed Ismail Bennani }; 621f6a57c1SMed Ismail Bennani } // namespace lldb_private 631f6a57c1SMed Ismail Bennani 641f6a57c1SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 651f6a57c1SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H 66