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()));