Skip to content
Snippets Groups Projects
Commit c0111775 authored by Florent Lamiraux's avatar Florent Lamiraux Committed by Florent Lamiraux florent@laas.fr
Browse files

Save temporary changes to get list of signals of an entity.

parent ec4c7a1a
No related branches found
No related tags found
No related merge requests found
......@@ -39,6 +39,7 @@ namespace dynamicgraph {
extern PyObject* getName(PyObject* self, PyObject* args);
extern PyObject* getSignal(PyObject* self, PyObject* args);
extern PyObject* displaySignals(PyObject* self, PyObject* args);
extern PyObject* listSignals(PyObject* self, PyObject* args);
extern PyObject* executeCommand(PyObject* self, PyObject* args);
extern PyObject* listCommands(PyObject* self, PyObject* args);
extern PyObject* getCommandDocstring(PyObject* self, PyObject* args);
......@@ -162,6 +163,9 @@ static PyMethodDef dynamicGraphMethods[] = {
{"entity_display_signals", dynamicgraph::python::entity::displaySignals,
METH_VARARGS,
"Display the list of signals of an entity in standard output"},
{"entity_list_signals", dynamicgraph::python::entity::listSignals,
METH_VARARGS,
"Return the list of signals of an entity."},
{"entity_execute_command",
dynamicgraph::python::entity::executeCommand,
METH_VARARGS,
......
......@@ -73,7 +73,7 @@ class Entity (object) :
Get a signal of the entity from signal name
"""
signalPt = wrap.entity_get_signal(self.obj, name)
return signal_base.SignalBase("", signalPt)
return signal_base.SignalBase(name = "", obj = signalPt)
def displaySignals(self) :
"""
......@@ -85,7 +85,8 @@ class Entity (object) :
"""
Alias of displaySignals to reduce verbosity. To be confirmed.
"""
self.displaySignals()
sl = wrap.entity_list_signals(self.obj)
return map(lambda pyObj: signalBase.SignalBase(obj=pyObj), sl)
def commands(self):
"""
......
......@@ -150,7 +150,7 @@ class SignalBase (object) :
obj = None
def __init__(self, name, obj = None) :
def __init__(self, name = "", obj = None) :
"""
Constructor: if not called by a child class, create and store a pointer
to a C++ SignalBase<int> object.
......
......@@ -157,6 +157,40 @@ namespace dynamicgraph {
return Py_BuildValue("");
}
PyObject* listSignals(PyObject* self, PyObject* args)
{
void* pointer = NULL;
PyObject* object = NULL;
if (!PyArg_ParseTuple(args, "O", &object))
return NULL;
if (!PyCObject_Check(object))
return NULL;
pointer = PyCObject_AsVoidPtr(object);
Entity* entity = (Entity*)pointer;
try {
Entity::SignalMap signalMap = entity->getSignalMap();
// Create a tuple of same size as the command map
PyObject* result = PyTuple_New(signalMap.size());
unsigned int count = 0;
for (Entity::SignalMap::iterator it = signalMap.begin();
it != signalMap.end(); it++) {
SignalBase<int>* signal = it->second;
PyObject* pySignal = PyCObject_FromVoidPtr((void*)signal, NULL);
PyTuple_SET_ITEM(result, count, pySignal);
count++;
}
return result;
} catch(ExceptionAbstract& exc) {
PyErr_SetString(error, exc.getStringMessage().c_str());
}
return NULL;
}
void fillMatrixRow(Matrix& m, unsigned iRow, PyObject* tuple)
{
if (PyTuple_Size(tuple) != (int)m.nbCols()) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment