1b1c73532SDimitry Andric //===-- OperatingSystemPythonInterface.h ------------------------*- C++ -*-===// 2b1c73532SDimitry Andric // 3b1c73532SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4b1c73532SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5b1c73532SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6b1c73532SDimitry Andric // 7b1c73532SDimitry Andric //===----------------------------------------------------------------------===// 8b1c73532SDimitry Andric 9b1c73532SDimitry Andric #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_OPERATINGSYSTEMPYTHONINTERFACE_H 10b1c73532SDimitry Andric #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_OPERATINGSYSTEMPYTHONINTERFACE_H 11b1c73532SDimitry Andric 12b1c73532SDimitry Andric #include "lldb/Host/Config.h" 13b1c73532SDimitry Andric 14b1c73532SDimitry Andric #if LLDB_ENABLE_PYTHON 15b1c73532SDimitry Andric 16b1c73532SDimitry Andric #include "ScriptedThreadPythonInterface.h" 17b1c73532SDimitry Andric #include "lldb/Interpreter/Interfaces/OperatingSystemInterface.h" 18b1c73532SDimitry Andric #include <optional> 19b1c73532SDimitry Andric 20b1c73532SDimitry Andric namespace lldb_private { 21b1c73532SDimitry Andric class OperatingSystemPythonInterface 22b1c73532SDimitry Andric : virtual public OperatingSystemInterface, 23b1c73532SDimitry Andric virtual public ScriptedThreadPythonInterface { 24b1c73532SDimitry Andric public: 25b1c73532SDimitry Andric OperatingSystemPythonInterface(ScriptInterpreterPythonImpl &interpreter); 26b1c73532SDimitry Andric 27b1c73532SDimitry Andric llvm::Expected<StructuredData::GenericSP> 28b1c73532SDimitry Andric CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, 29b1c73532SDimitry Andric StructuredData::DictionarySP args_sp, 30b1c73532SDimitry Andric StructuredData::Generic *script_obj = nullptr) override; 31b1c73532SDimitry Andric GetAbstractMethods()32b1c73532SDimitry Andric llvm::SmallVector<llvm::StringLiteral> GetAbstractMethods() const override { 33b1c73532SDimitry Andric return llvm::SmallVector<llvm::StringLiteral>({"get_thread_info"}); 34b1c73532SDimitry Andric } 35b1c73532SDimitry Andric 36b1c73532SDimitry Andric StructuredData::DictionarySP CreateThread(lldb::tid_t tid, 37b1c73532SDimitry Andric lldb::addr_t context) override; 38b1c73532SDimitry Andric 39b1c73532SDimitry Andric StructuredData::ArraySP GetThreadInfo() override; 40b1c73532SDimitry Andric 41b1c73532SDimitry Andric StructuredData::DictionarySP GetRegisterInfo() override; 42b1c73532SDimitry Andric 43b1c73532SDimitry Andric std::optional<std::string> GetRegisterContextForTID(lldb::tid_t tid) override; 44b1c73532SDimitry Andric }; 45b1c73532SDimitry Andric } // namespace lldb_private 46b1c73532SDimitry Andric 47b1c73532SDimitry Andric #endif // LLDB_ENABLE_PYTHON 48b1c73532SDimitry Andric #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_OPERATINGSYSTEMPYTHONINTERFACE_H 49