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 
163925204cSMed Ismail Bennani #include "ScriptedPythonInterface.h"
171f6a57c1SMed Ismail Bennani #include "lldb/Interpreter/ScriptedProcessInterface.h"
181f6a57c1SMed Ismail Bennani 
191f6a57c1SMed Ismail Bennani namespace lldb_private {
203925204cSMed Ismail Bennani class ScriptedProcessPythonInterface : public ScriptedProcessInterface,
213925204cSMed Ismail Bennani                                        public ScriptedPythonInterface {
221f6a57c1SMed Ismail Bennani public:
233925204cSMed Ismail Bennani   ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter);
241f6a57c1SMed Ismail Bennani 
251f6a57c1SMed Ismail Bennani   StructuredData::GenericSP
263925204cSMed Ismail Bennani   CreatePluginObject(const llvm::StringRef class_name,
273925204cSMed Ismail Bennani                      ExecutionContext &exe_ctx,
281f6a57c1SMed Ismail Bennani                      StructuredData::DictionarySP args_sp) override;
291f6a57c1SMed Ismail Bennani 
301f6a57c1SMed Ismail Bennani   Status Launch() override;
311f6a57c1SMed Ismail Bennani 
321f6a57c1SMed Ismail Bennani   Status Resume() override;
331f6a57c1SMed Ismail Bennani 
34312b43daSMed Ismail Bennani   bool ShouldStop() override;
35312b43daSMed Ismail Bennani 
36312b43daSMed Ismail Bennani   Status Stop() override;
37312b43daSMed Ismail Bennani 
38a758c9f7SMed Ismail Bennani   llvm::Optional<MemoryRegionInfo>
39a758c9f7SMed Ismail Bennani   GetMemoryRegionContainingAddress(lldb::addr_t address,
40a758c9f7SMed Ismail Bennani                                    Status &error) override;
411f6a57c1SMed Ismail Bennani 
42*4858fe04SMed Ismail Bennani   StructuredData::DictionarySP GetThreadsInfo() override;
43*4858fe04SMed Ismail Bennani 
441f6a57c1SMed Ismail Bennani   StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) override;
451f6a57c1SMed Ismail Bennani 
461f6a57c1SMed Ismail Bennani   StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) override;
471f6a57c1SMed Ismail Bennani 
481f6a57c1SMed Ismail Bennani   lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size,
491f6a57c1SMed Ismail Bennani                                             Status &error) override;
501f6a57c1SMed Ismail Bennani 
511f6a57c1SMed Ismail Bennani   StructuredData::DictionarySP GetLoadedImages() override;
521f6a57c1SMed Ismail Bennani 
531f6a57c1SMed Ismail Bennani   lldb::pid_t GetProcessID() override;
541f6a57c1SMed Ismail Bennani 
551f6a57c1SMed Ismail Bennani   bool IsAlive() override;
5659d8dd79SMed Ismail Bennani 
5759d8dd79SMed Ismail Bennani   llvm::Optional<std::string> GetScriptedThreadPluginName() override;
5859d8dd79SMed Ismail Bennani 
5959d8dd79SMed Ismail Bennani private:
6059d8dd79SMed Ismail Bennani   lldb::ScriptedThreadInterfaceSP GetScriptedThreadInterface() override;
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