aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PySide/QtCore/typesystem_core.xml19
-rw-r--r--libpyside/pyside.cpp12
-rw-r--r--libpyside/pyside.h8
3 files changed, 20 insertions, 19 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml
index 704306115..1c0baf757 100644
--- a/PySide/QtCore/typesystem_core.xml
+++ b/PySide/QtCore/typesystem_core.xml
@@ -1382,25 +1382,6 @@
%PYARG_0 = %CONVERTTOPYTHON[bool](qobjectDisconnectCallback(%1, %2, %3));
</inject-code>
</add-function>
- <inject-code class="native" position="beginning">
- static bool
- qobjectInheritsInternal(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 qobjectInheritsInternal(base, class_name);
- }
- </inject-code>
- <modify-function signature="inherits(const char*) const">
- <inject-code class="target" position="beginning">
- bool retval = qobjectInheritsInternal(self->ob_type, %1) ? true : %CPPSELF.%FUNCTION_NAME(%1);
- %PYARG_0 = %CONVERTTOPYTHON[bool](retval);
- </inject-code>
- </modify-function>
<inject-code class="native" file="glue/qobject_findchild.cpp"/>
<add-function signature="findChild(PyTypeObject*, const QString&amp;)" return-type="PyObject*">
<inject-code class="target" position="beginning">
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