diff --git a/src/entity-py.cc b/src/entity-py.cc index f907867f1d6d8ca409aaf3194e76952e5aa4ced2..af85ed130c202f2bab523da0e23e82843fbd96eb 100644 --- a/src/entity-py.cc +++ b/src/entity-py.cc @@ -174,12 +174,14 @@ namespace dynamicgraph { } for (unsigned int iCol=0; iCol < m.nbCols(); iCol++) { PyObject* pyDouble = PyTuple_GetItem(tuple, iCol); - if (!PyFloat_Check(pyDouble)) { + if (PyFloat_Check(pyDouble)) + m(iRow, iCol) = PyFloat_AsDouble(pyDouble); + else if(PyInt_Check(pyDouble)) + m(iRow, iCol) = (int)PyInt_AS_LONG(pyDouble)+0.0; + else throw ExceptionFactory(ExceptionFactory::GENERIC, "element of matrix should be " "a floating point number."); - } - m(iRow, iCol) = PyFloat_AsDouble(pyDouble); } } @@ -258,12 +260,14 @@ namespace dynamicgraph { v.resize(size); for (unsigned int i=0; i<size; i++) { PyObject* pyDouble = PyTuple_GetItem(pyObject, i); - if (!PyFloat_Check(pyDouble)) { + if (PyFloat_Check(pyDouble)) + v(i) = PyFloat_AsDouble(pyDouble); + else if(PyInt_Check(pyDouble)) + v(i) = (int)PyInt_AS_LONG(pyObject)+0.0; + else throw ExceptionFactory(ExceptionFactory::GENERIC, "element of vector should be a floating " "point number."); - } - v(i) = PyFloat_AsDouble(pyDouble); } return Value(v); break; @@ -428,7 +432,7 @@ namespace dynamicgraph { valueVector.push_back(value); } catch (ExceptionAbstract& exc) { std::stringstream ss; - ss << "argument " << iParam+1 << " should be a " + ss << "Error while parsing argument " << iParam+1 << ": " << exc.what() << "."; PyErr_SetString(error, ss.str().c_str()) ; return NULL;