xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
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