From 82d05f507e374388990d15fa625c0a4f263c3051 Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Tue, 13 Feb 2018 18:58:14 +0100 Subject: [PATCH] Add entity_get_class_name --- src/dynamic-graph-py.cc | 3 +++ src/entity-py.cc | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc index ff987bf..99ad52c 100644 --- a/src/dynamic-graph-py.cc +++ b/src/dynamic-graph-py.cc @@ -48,6 +48,7 @@ namespace dynamicgraph { extern PyObject* display(PyObject* self, PyObject* args); extern PyObject* display(PyObject* self, PyObject* args); extern PyObject* getName(PyObject* self, PyObject* args); + extern PyObject* getClassName(PyObject* self, PyObject* args); extern PyObject* hasSignal(PyObject* self, PyObject* args); extern PyObject* getSignal(PyObject* self, PyObject* args); extern PyObject* listSignals(PyObject* self, PyObject* args); @@ -181,6 +182,8 @@ static PyMethodDef dynamicGraphMethods[] = { "print an Entity C++ object"}, {"entity_get_name", dynamicgraph::python::entity::getName, METH_VARARGS, "get the name of an Entity"}, + {"entity_get_class_name", dynamicgraph::python::entity::getClassName, METH_VARARGS, + "get the class name of an Entity"}, {"entity_has_signal", dynamicgraph::python::entity::hasSignal, METH_VARARGS, "return True if the entity has a signal with the given name"}, {"entity_get_signal", dynamicgraph::python::entity::getSignal, METH_VARARGS, diff --git a/src/entity-py.cc b/src/entity-py.cc index eef09a6..0cdf8f4 100644 --- a/src/entity-py.cc +++ b/src/entity-py.cc @@ -113,6 +113,32 @@ namespace dynamicgraph { return Py_BuildValue("s", name.c_str()); } + /** + \brief Get class name of entity + */ + PyObject* getClassName(PyObject* /*self*/, PyObject* args) + { + PyObject* object = NULL; + void* pointer = NULL; + std::string name; + + if (!PyArg_ParseTuple(args, "O", &object)) + return NULL; + if (!PyCObject_Check(object)) { + PyErr_SetString(PyExc_TypeError, + "function takes a PyCObject as argument"); + return NULL; + } + + pointer = PyCObject_AsVoidPtr(object); + Entity* entity = (Entity*)pointer; + + try { + name = entity->getClassName(); + } CATCH_ALL_EXCEPTIONS(); + return Py_BuildValue("s", name.c_str()); + } + /** \brief Check if the entity has a signal with the given name */ -- GitLab