From af72829368a7a9c170749ece4225d529bc844cc2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 9 Jun 2021 14:08:29 +0200 Subject: libpyside: Add type check for PySideSignalInstanceType Pick-to: 6.1 Task-number: PYSIDE-1482 Change-Id: I00d30c95bd5835b6d904bc28f671e284017fffb5 Reviewed-by: Christian Tismer --- sources/pyside6/libpyside/pysidesignal.cpp | 6 ++++++ sources/pyside6/libpyside/pysidesignal.h | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'sources/pyside6') diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp index faa6fdce1..276da1cad 100644 --- a/sources/pyside6/libpyside/pysidesignal.cpp +++ b/sources/pyside6/libpyside/pysidesignal.cpp @@ -733,6 +733,12 @@ bool checkType(PyObject *pyObj) return false; } +bool checkInstanceType(PyObject *pyObj) +{ + return pyObj != nullptr + && PyType_IsSubtype(Py_TYPE(pyObj), PySideSignalInstanceTypeF()) != 0; +} + void updateSourceObject(PyObject *source) { PyTypeObject *objType = reinterpret_cast(PyObject_Type(source)); diff --git a/sources/pyside6/libpyside/pysidesignal.h b/sources/pyside6/libpyside/pysidesignal.h index 55e1ee405..edef37af1 100644 --- a/sources/pyside6/libpyside/pysidesignal.h +++ b/sources/pyside6/libpyside/pysidesignal.h @@ -72,7 +72,21 @@ extern "C" namespace PySide { namespace Signal { -PYSIDE_API bool checkType(PyObject *type); +/** + * This function checks for the PySideSignal type. + * + * @param pyObj + * @return whether pyObj is a PySideSignal + **/ +PYSIDE_API bool checkType(PyObject *pyObj); + +/** + * This function checks for the PySideSignalInstanceType type. + * + * @param pyObj + * @return Whether pyObj is a PySideSignalInstance + **/ +PYSIDE_API bool checkInstanceType(PyObject *pyObj); /** * Register all C++ signals of a QObject on Python type. -- cgit v1.2.3