Skip to content
Snippets Groups Projects
Commit 680ec0c8 authored by florent's avatar florent
Browse files

Catch exceptions in signal set and get value methods.

      * src/signal-base-py.cc.
parent 574c2cc0
No related branches found
No related tags found
No related merge requests found
......@@ -8,8 +8,14 @@
#include <sstream>
#include <dynamic-graph/signal-base.h>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <dynamic-graph/signal-caster.h>
typedef boost::numeric::ublas::vector<double> Vector;
using dynamicgraph::SignalBase;
dynamicgraph::DefaultCastRegisterer<Vector> vectorCast;
namespace dynamicgraph {
namespace python {
......@@ -75,8 +81,19 @@ namespace dynamicgraph {
SignalBase<int>* signal = (SignalBase<int>*)pointer;
std::ostringstream value;
signal->get(value);
return Py_BuildValue("s", value.str());
try {
signal->get(value);
} catch (const dynamicgraph::ExceptionAbstract& exc) {
PyErr_SetString(error, exc.getStringMessage().c_str());
return NULL;
} catch (const std::exception& exc) {
PyErr_SetString(error, exc.what());
} catch (...) {
PyErr_SetString(error, "Unknown exception");
return NULL;
}
std::string valueString = value.str();
return Py_BuildValue("s", valueString.c_str());
}
PyObject* setValue(PyObject* self, PyObject* args)
......@@ -92,9 +109,23 @@ namespace dynamicgraph {
pointer = PyCObject_AsVoidPtr(object);
SignalBase<int>* signal = (SignalBase<int>*)pointer;
std::istringstream value(valueString);
std::ostringstream os;
os << valueString;
std::istringstream value(os.str());
try {
signal->set(value);
} catch (const dynamicgraph::ExceptionAbstract& exc) {
PyErr_SetString(error, exc.getStringMessage().c_str());
return NULL;
} catch (const std::exception& exc) {
PyErr_SetString(error, exc.what());
return NULL;
} catch (...) {
PyErr_SetString(error, "Unknown exception");
return NULL;
}
signal->set(value);
return Py_BuildValue("");
}
}
......
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