From e960a8a5c391663678e937f9a3904cd9526eb0ab Mon Sep 17 00:00:00 2001 From: Mansard <nmansard@laas.fr> Date: Mon, 24 Jan 2011 11:30:40 +0100 Subject: [PATCH] Added the unplug python function as a member of the signal-base class. --- src/dynamic-graph-py.cc | 3 +++ src/dynamic_graph/signal_base.py | 6 ++++++ src/signal-base-py.cc | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc index 083f35f..3ba6c14 100644 --- a/src/dynamic-graph-py.cc +++ b/src/dynamic-graph-py.cc @@ -34,6 +34,7 @@ namespace dynamicgraph { extern PyObject* getValue(PyObject* self, PyObject* args); extern PyObject* setValue(PyObject* self, PyObject* args); extern PyObject* recompute(PyObject* self, PyObject* args); + extern PyObject* unplug(PyObject* self, PyObject* args); } namespace entity { extern PyObject* create(PyObject* self, PyObject* args); @@ -155,6 +156,8 @@ static PyMethodDef dynamicGraphMethods[] = { METH_VARARGS, "Set the value of a signal"}, {"signal_base_recompute", dynamicgraph::python::signalBase::recompute, METH_VARARGS, "Recompute the signal at given time"}, + {"signal_base_unplug", dynamicgraph::python::signalBase::unplug, + METH_VARARGS, "Unplug the signal"}, // Entity {"create_entity", dynamicgraph::python::entity::create, METH_VARARGS, "create an Entity C++ object"}, diff --git a/src/dynamic_graph/signal_base.py b/src/dynamic_graph/signal_base.py index c483610..e1c57f6 100644 --- a/src/dynamic_graph/signal_base.py +++ b/src/dynamic_graph/signal_base.py @@ -211,9 +211,15 @@ class SignalBase (object) : Force signal to recompute the value at given time. """ return wrap.signal_base_recompute(self.obj, time) + def unplug(self): + """ + Unplug a PTR signal. + """ + return wrap.signal_base_unplug(self.obj) def __str__(self): """ Print signal in a string """ return wrap.signal_base_display(self.obj) + diff --git a/src/signal-base-py.cc b/src/signal-base-py.cc index e0d6d8a..7936987 100644 --- a/src/signal-base-py.cc +++ b/src/signal-base-py.cc @@ -202,6 +202,25 @@ namespace dynamicgraph { } return Py_BuildValue(""); } + + PyObject* unplug(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); + SignalBase<int>* signal = (SignalBase<int>*)pointer; + try { + signal->unplug(); + } catch (const std::exception& exc) { + PyErr_SetString(error, exc.what()); + } + return Py_BuildValue(""); + } } } } -- GitLab