[Lldb-commits] [lldb] [lldb/Interpreter] Make Scripted*Interface base class abstract (PR #71465)
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Mon Nov 6 21:25:38 PST 2023
https://github.com/medismailben updated https://github.com/llvm/llvm-project/pull/71465
>From 54bde6b52bb02d1626611926e6d4e4b282a28081 Mon Sep 17 00:00:00 2001
From: Med Ismail Bennani <ismail at bennani.ma>
Date: Mon, 6 Nov 2023 16:12:36 -0800
Subject: [PATCH] [lldb/Interpreter] Make Scripted*Interface base class
abstract
This patch makes the various Scripted Interface base class abstract by
making the `CreatePluginObject` method pure virtual.
This means that we cannot construct a Scripted Interface base class
instance, so this patch also updates the various
`ScriptedInterpreter::CreateScripted*Interface` methods to return a
`nullptr` instead.`
This patch also removes the `ScriptedPlatformInterface` member from the
`ScriptInterpreter` class since it the interpreter can be owned by the
`ScriptedPlatform` instance itself, like we do for `ScriptedProcess` objects.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
---
.../Interfaces/ScriptedPlatformInterface.h | 4 +---
.../Interfaces/ScriptedProcessInterface.h | 4 +---
.../Interfaces/ScriptedThreadInterface.h | 4 +---
.../include/lldb/Interpreter/ScriptInterpreter.h | 16 ++++++----------
lldb/source/Interpreter/ScriptInterpreter.cpp | 9 +++------
.../Python/ScriptInterpreterPython.cpp | 2 --
6 files changed, 12 insertions(+), 27 deletions(-)
diff --git a/lldb/include/lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h b/lldb/include/lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h
index 2dcbb47ffa6de85..7feaa01fe89b860 100644
--- a/lldb/include/lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h
+++ b/lldb/include/lldb/Interpreter/Interfaces/ScriptedPlatformInterface.h
@@ -22,9 +22,7 @@ class ScriptedPlatformInterface : virtual public ScriptedInterface {
virtual llvm::Expected<StructuredData::GenericSP>
CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
StructuredData::DictionarySP args_sp,
- StructuredData::Generic *script_obj = nullptr) {
- return {llvm::make_error<UnimplementedError>()};
- }
+ StructuredData::Generic *script_obj = nullptr) = 0;
virtual StructuredData::DictionarySP ListProcesses() { return {}; }
diff --git a/lldb/include/lldb/Interpreter/Interfaces/ScriptedProcessInterface.h b/lldb/include/lldb/Interpreter/Interfaces/ScriptedProcessInterface.h
index a429cacd862f121..10203b1f8baa7aa 100644
--- a/lldb/include/lldb/Interpreter/Interfaces/ScriptedProcessInterface.h
+++ b/lldb/include/lldb/Interpreter/Interfaces/ScriptedProcessInterface.h
@@ -24,9 +24,7 @@ class ScriptedProcessInterface : virtual public ScriptedInterface {
virtual llvm::Expected<StructuredData::GenericSP>
CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
StructuredData::DictionarySP args_sp,
- StructuredData::Generic *script_obj = nullptr) {
- return {llvm::make_error<UnimplementedError>()};
- }
+ StructuredData::Generic *script_obj = nullptr) = 0;
virtual StructuredData::DictionarySP GetCapabilities() { return {}; }
diff --git a/lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadInterface.h b/lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadInterface.h
index 107e593b5561ef7..a7cfc690b67dc74 100644
--- a/lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadInterface.h
+++ b/lldb/include/lldb/Interpreter/Interfaces/ScriptedThreadInterface.h
@@ -23,9 +23,7 @@ class ScriptedThreadInterface : virtual public ScriptedInterface {
virtual llvm::Expected<StructuredData::GenericSP>
CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
StructuredData::DictionarySP args_sp,
- StructuredData::Generic *script_obj = nullptr) {
- return {llvm::make_error<UnimplementedError>()};
- }
+ StructuredData::Generic *script_obj = nullptr) = 0;
virtual lldb::tid_t GetThreadID() { return LLDB_INVALID_THREAD_ID; }
diff --git a/lldb/include/lldb/Interpreter/ScriptInterpreter.h b/lldb/include/lldb/Interpreter/ScriptInterpreter.h
index 0146eeb86262003..b941f6012a117b6 100644
--- a/lldb/include/lldb/Interpreter/ScriptInterpreter.h
+++ b/lldb/include/lldb/Interpreter/ScriptInterpreter.h
@@ -151,10 +151,7 @@ class ScriptInterpreter : public PluginInterface {
eScriptReturnTypeOpaqueObject
};
- ScriptInterpreter(
- Debugger &debugger, lldb::ScriptLanguage script_lang,
- lldb::ScriptedPlatformInterfaceUP scripted_platform_interface_up =
- std::make_unique<ScriptedPlatformInterface>());
+ ScriptInterpreter(Debugger &debugger, lldb::ScriptLanguage script_lang);
virtual StructuredData::DictionarySP GetInterpreterInfo();
@@ -559,19 +556,19 @@ class ScriptInterpreter : public PluginInterface {
lldb::ScriptLanguage GetLanguage() { return m_script_lang; }
virtual lldb::ScriptedProcessInterfaceUP CreateScriptedProcessInterface() {
- return std::make_unique<ScriptedProcessInterface>();
+ return {};
}
virtual lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() {
- return std::make_shared<ScriptedThreadInterface>();
+ return {};
}
virtual lldb::OperatingSystemInterfaceSP CreateOperatingSystemInterface() {
- return std::make_shared<OperatingSystemInterface>();
+ return {};
}
- ScriptedPlatformInterface &GetScriptedPlatformInterface() {
- return *m_scripted_platform_interface_up;
+ virtual lldb::ScriptedPlatformInterfaceUP GetScriptedPlatformInterface() {
+ return {};
}
virtual StructuredData::ObjectSP
@@ -599,7 +596,6 @@ class ScriptInterpreter : public PluginInterface {
protected:
Debugger &m_debugger;
lldb::ScriptLanguage m_script_lang;
- lldb::ScriptedPlatformInterfaceUP m_scripted_platform_interface_up;
};
} // namespace lldb_private
diff --git a/lldb/source/Interpreter/ScriptInterpreter.cpp b/lldb/source/Interpreter/ScriptInterpreter.cpp
index fb3fa74d0b97804..8dd499ce819a789 100644
--- a/lldb/source/Interpreter/ScriptInterpreter.cpp
+++ b/lldb/source/Interpreter/ScriptInterpreter.cpp
@@ -27,12 +27,9 @@
using namespace lldb;
using namespace lldb_private;
-ScriptInterpreter::ScriptInterpreter(
- Debugger &debugger, lldb::ScriptLanguage script_lang,
- lldb::ScriptedPlatformInterfaceUP scripted_platform_interface_up)
- : m_debugger(debugger), m_script_lang(script_lang),
- m_scripted_platform_interface_up(
- std::move(scripted_platform_interface_up)) {}
+ScriptInterpreter::ScriptInterpreter(Debugger &debugger,
+ lldb::ScriptLanguage script_lang)
+ : m_debugger(debugger), m_script_lang(script_lang) {}
void ScriptInterpreter::CollectDataForBreakpointCommandCallback(
std::vector<std::reference_wrapper<BreakpointOptions>> &bp_options_vec,
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 953f8b3aba18f79..ef7a2c128a22074 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -427,8 +427,6 @@ ScriptInterpreterPythonImpl::ScriptInterpreterPythonImpl(Debugger &debugger)
m_active_io_handler(eIOHandlerNone), m_session_is_active(false),
m_pty_secondary_is_open(false), m_valid_session(true), m_lock_count(0),
m_command_thread_state(nullptr) {
- m_scripted_platform_interface_up =
- std::make_unique<ScriptedPlatformPythonInterface>(*this);
m_dictionary_name.append("_dict");
StreamString run_string;
More information about the lldb-commits
mailing list