diff options
Diffstat (limited to 'libpyside')
-rw-r--r-- | libpyside/pyside.cpp | 12 | ||||
-rw-r--r-- | libpyside/pyside.h | 8 |
2 files changed, 20 insertions, 0 deletions
diff --git a/libpyside/pyside.cpp b/libpyside/pyside.cpp index af763aa44..950e2da5f 100644 --- a/libpyside/pyside.cpp +++ b/libpyside/pyside.cpp @@ -284,5 +284,17 @@ PyObject* getMetaDataFromQObject(QObject* cppSelf, PyObject* self, PyObject* nam return attr; } +bool inherits(PyTypeObject* objType, const char* class_name) +{ + if (strcmp(objType->tp_name, class_name) == 0) + return true; + + PyTypeObject* base = (objType)->tp_base; + if (base == 0) + return false; + + return inherits(base, class_name); +} + } //namespace PySide diff --git a/libpyside/pyside.h b/libpyside/pyside.h index fae1b420f..747b08da8 100644 --- a/libpyside/pyside.h +++ b/libpyside/pyside.h @@ -102,6 +102,14 @@ PYSIDE_API void destroyQCoreApplication(); */ PYSIDE_API PyObject* getMetaDataFromQObject(QObject* cppSelf, PyObject* self, PyObject* name); +/** + * Check if self inherits from class_name + * \param self Python object + * \param class_name strict with the class name + * \return Returns true if self object inherits from class_name, otherwise returns false + */ +PYSIDE_API bool inherits(PyTypeObject* self, const char* class_name); + } //namespace PySide |