diff options
author | Med Ismail Bennani <medismail.bennani@gmail.com> | 2021-09-03 22:03:06 +0000 |
---|---|---|
committer | Med Ismail Bennani <medismail.bennani@gmail.com> | 2021-09-03 22:18:55 +0000 |
commit | 5f6f33da9ee6cbaef5f10b4a7be34a91d5185b2b (patch) | |
tree | 68c33dd6265108292f055b5e38aaa1234b4dc813 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h | |
parent | b989662eb000efb54b91b8c82d2b2713e2da20fc (diff) | |
download | llvm-5f6f33da9ee6cbaef5f10b4a7be34a91d5185b2b.zip llvm-5f6f33da9ee6cbaef5f10b4a7be34a91d5185b2b.tar.gz llvm-5f6f33da9ee6cbaef5f10b4a7be34a91d5185b2b.tar.bz2 |
[lldb/Plugins] Move member template specialization out of class
This patch should fix the build failure that surfaced when build llvm
with GCC: https://lab.llvm.org/staging/#/builders/16/builds/10450
GCC complained that I explicitely specialized
`ScriptedPythonInterface::ExtractValueFromPythonObject` in a
in non-namespace scope, which is tolerated by Clang.
To solve this issue, the specialization were declared out of the class
and implemented in the source file.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h')
-rw-r--r-- | lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h index 85ec167..bac4efb 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h @@ -33,33 +33,6 @@ protected: return p.CreateStructuredObject(); } - template <> - Status ExtractValueFromPythonObject<Status>(python::PythonObject &p, - Status &error) { - if (lldb::SBError *sb_error = reinterpret_cast<lldb::SBError *>( - LLDBSWIGPython_CastPyObjectToSBError(p.get()))) - error = m_interpreter.GetStatusFromSBError(*sb_error); - else - error.SetErrorString("Couldn't cast lldb::SBError to lldb::Status."); - - return error; - } - - template <> - lldb::DataExtractorSP - ExtractValueFromPythonObject<lldb::DataExtractorSP>(python::PythonObject &p, - Status &error) { - lldb::SBData *sb_data = reinterpret_cast<lldb::SBData *>( - LLDBSWIGPython_CastPyObjectToSBData(p.get())); - - if (!sb_data) { - error.SetErrorString("Couldn't cast lldb::SBError to lldb::Status."); - return nullptr; - } - - return m_interpreter.GetDataExtractorFromSBData(*sb_data); - } - template <typename T = StructuredData::ObjectSP, typename... Args> T Dispatch(llvm::StringRef method_name, Status &error, Args... args) { using namespace python; @@ -149,6 +122,16 @@ protected: // The lifetime is managed by the ScriptInterpreter ScriptInterpreterPythonImpl &m_interpreter; }; + +template <> +Status ScriptedPythonInterface::ExtractValueFromPythonObject<Status>( + python::PythonObject &p, Status &error); + +template <> +lldb::DataExtractorSP +ScriptedPythonInterface::ExtractValueFromPythonObject<lldb::DataExtractorSP>( + python::PythonObject &p, Status &error); + } // namespace lldb_private #endif // LLDB_ENABLE_PYTHON |