diff --git a/src/Base/TypePy.xml b/src/Base/TypePy.xml
index b1408e2e6d..ce5c6efa3b 100644
--- a/src/Base/TypePy.xml
+++ b/src/Base/TypePy.xml
@@ -54,7 +54,7 @@ namespace Base {
Returns true if given type is a father
-
+
Returns all descendants
diff --git a/src/Base/TypePyImp.cpp b/src/Base/TypePyImp.cpp
index af9b2b2a77..c6f6e065ed 100644
--- a/src/Base/TypePyImp.cpp
+++ b/src/Base/TypePyImp.cpp
@@ -95,22 +95,24 @@ PyObject* TypePy::isBad(PyObject *args)
PyObject* TypePy::isDerivedFrom(PyObject *args)
{
- char *name;
- if (!PyArg_ParseTuple(args, "s", &name)) // convert args: Python->C
- return NULL; // NULL triggers exception
+ const char *name;
+ if (!PyArg_ParseTuple(args, "s", &name))
+ return NULL;
Base::Type type = Base::Type::fromName(name);
bool v = (type != Base::Type::badType() && getBaseTypePtr()->isDerivedFrom(type));
return PyBool_FromLong(v ? 1 : 0);
}
-PyObject* TypePy::getAllDerivedFrom(PyObject *args)
+PyObject* TypePy::staticCallback_getAllDerivedFrom(PyObject* /*self*/, PyObject *args)
{
- if (!PyArg_ParseTuple(args, "")) // convert args: Python->C
- return NULL; // NULL triggers exception
-
+ const char *name;
+ if (!PyArg_ParseTuple(args, "s", &name))
+ return NULL;
+
+ Base::Type type = Base::Type::fromName(name);
std::vector ary;
- Base::Type::getAllDerivedFrom(*getBaseTypePtr(), ary);
+ Base::Type::getAllDerivedFrom(type, ary);
Py::List res;
for (std::vector::iterator it = ary.begin(); it != ary.end(); ++it)
res.append(Py::String(it->getName()));