diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc index 544b0b50c5f00d5b6eb905c739258cf7dd9fc9de..a6235bc4fefbf91a0d0a2f93ff5b9f8dd9b38639 100644 --- a/src/dynamic-graph-py.cc +++ b/src/dynamic-graph-py.cc @@ -11,6 +11,7 @@ #include <dynamic-graph/exception-factory.h> #include <dynamic-graph/interpreter-helper.h> #include <dynamic-graph/functions.h> +#include <dynamic-graph/signal-base.h> namespace dynamicgraph { namespace python { @@ -44,21 +45,31 @@ namespace dynamicgraph { PyObject* plug(PyObject* self, PyObject* args) { - char* objIn = NULL; - char* objOut = NULL; - char* sigIn = NULL; - char* sigOut = NULL; - if (!PyArg_ParseTuple(args,"ssss", &objOut, &sigOut, &objIn, &sigIn)) + PyObject* objOut = NULL; + PyObject* objIn = NULL; + void* pObjOut; + void* pObjIn; + + if (!PyArg_ParseTuple(args,"OO", &objOut, &objIn)) + return NULL; + + if (!PyCObject_Check(objOut)) + return NULL; + if (!PyCObject_Check(objIn)) return NULL; + pObjIn = PyCObject_AsVoidPtr(objIn); + SignalBase<int>* signalIn = (SignalBase<int>*)pObjIn; + pObjOut = PyCObject_AsVoidPtr(objOut); + SignalBase<int>* signalOut = (SignalBase<int>*)pObjOut; std::ostringstream os; + try { - interpreter.cmdPlug(objOut, sigOut, objIn, sigIn, os); + signalIn->plug(signalOut); } catch (std::exception& exc) { PyErr_SetString(error, exc.what()); return NULL; } - return Py_BuildValue(""); } diff --git a/src/dynamic_graph/__init__.py b/src/dynamic_graph/__init__.py index 9ca6f39d76b27a83afebc32f3195c22bc71b9fc8..688261755701d3c992f3f6eb829462e96957d4ad 100644 --- a/src/dynamic_graph/__init__.py +++ b/src/dynamic_graph/__init__.py @@ -10,9 +10,6 @@ import re def plug (signalOut, signalIn) : """ Plug an output signal into an input signal - syntax is plug ("entityIn.signalIn", "entityOut.signalOut") """ # get signals and entities - [eOut, sOut] = re.split("\.", signalOut) - [eIn, sIn] = re.split("\.", signalIn) - w_plug(eOut, sOut, eIn, sIn) + w_plug(signalOut.object, signalIn.object)