aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h
diff options
context:
space:
mode:
authorMed Ismail Bennani <medismail.bennani@gmail.com>2021-09-03 22:03:06 +0000
committerMed Ismail Bennani <medismail.bennani@gmail.com>2021-09-03 22:18:55 +0000
commit5f6f33da9ee6cbaef5f10b4a7be34a91d5185b2b (patch)
tree68c33dd6265108292f055b5e38aaa1234b4dc813 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptedPythonInterface.h
parentb989662eb000efb54b91b8c82d2b2713e2da20fc (diff)
downloadllvm-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.h37
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