Skip to content
Snippets Groups Projects
Commit 97d997a7 authored by Joseph Mirabel's avatar Joseph Mirabel
Browse files

Convert Python sequence (list, tuple...) to C++ vector, matrix...

parent bd7264b9
No related branches found
No related tags found
No related merge requests found
...@@ -145,14 +145,14 @@ namespace dynamicgraph { ...@@ -145,14 +145,14 @@ namespace dynamicgraph {
break; break;
case (Value::VECTOR) : case (Value::VECTOR) :
// Check that argument is a tuple // Check that argument is a tuple
if (!PyTuple_Check(pyObject)) { if (!PySequence_Check(pyObject)) {
throw ExceptionPython(ExceptionPython::VALUE_PARSING, throw ExceptionPython(ExceptionPython::VALUE_PARSING,
"vector"); "vector");
} }
size = PyTuple_Size(pyObject); size = PySequence_Size(pyObject);
v.resize(size); v.resize(size);
for (Py_ssize_t i=0; i<size; i++) { for (Py_ssize_t i=0; i<size; i++) {
PyObject* pyDouble = PyTuple_GetItem(pyObject, i); PyObject* pyDouble = PySequence_GetItem(pyObject, i);
if (PyFloat_Check(pyDouble)) if (PyFloat_Check(pyDouble))
v(i) = PyFloat_AsDouble(pyDouble); v(i) = PyFloat_AsDouble(pyDouble);
else if(PyInt_Check(pyDouble)) else if(PyInt_Check(pyDouble))
...@@ -166,27 +166,27 @@ namespace dynamicgraph { ...@@ -166,27 +166,27 @@ namespace dynamicgraph {
break; break;
case (Value::MATRIX) : case (Value::MATRIX) :
// Check that argument is a tuple // Check that argument is a tuple
if (!PyTuple_Check(pyObject)) { if (!PySequence_Check(pyObject)) {
throw ExceptionPython(ExceptionPython::VALUE_PARSING, throw ExceptionPython(ExceptionPython::VALUE_PARSING,
"matrix"); "matrix");
} }
nRows = PyTuple_Size(pyObject); nRows = PySequence_Size(pyObject);
if (nRows == 0) { if (nRows == 0) {
return Value(Matrix()); return Value(Matrix());
} }
row = PyTuple_GetItem(pyObject, 0); row = PySequence_GetItem(pyObject, 0);
if (!PyTuple_Check(row)) { if (!PySequence_Check(row)) {
throw ExceptionPython(ExceptionPython::MATRIX_PARSING, throw ExceptionPython(ExceptionPython::MATRIX_PARSING,
"matrix"); "matrix");
} }
nCols = PyTuple_Size(row); nCols = PySequence_Size(row);
m.resize((unsigned int)nRows, (unsigned int)nCols); m.resize((unsigned int)nRows, (unsigned int)nCols);
fillMatrixRow(m, 0, row); fillMatrixRow(m, 0, row);
for (Py_ssize_t iRow=1; iRow<nRows; iRow++) { for (Py_ssize_t iRow=1; iRow<nRows; iRow++) {
row = PyTuple_GetItem(pyObject, iRow); row = PySequence_GetItem(pyObject, iRow);
if (!PyTuple_Check(row)) { if (!PySequence_Check(row)) {
throw ExceptionPython(ExceptionPython::MATRIX_PARSING, throw ExceptionPython(ExceptionPython::MATRIX_PARSING,
"matrix"); "matrix");
} }
...@@ -196,27 +196,27 @@ namespace dynamicgraph { ...@@ -196,27 +196,27 @@ namespace dynamicgraph {
break; break;
case (Value::MATRIX4D) : case (Value::MATRIX4D) :
// Check that argument is a tuple // Check that argument is a tuple
if (!PyTuple_Check(pyObject)) { if (!PySequence_Check(pyObject)) {
throw ExceptionPython(ExceptionPython::VALUE_PARSING, throw ExceptionPython(ExceptionPython::VALUE_PARSING,
"matrix4d"); "matrix4d");
} }
nRows = PyTuple_Size(pyObject); nRows = PySequence_Size(pyObject);
if (nRows == 0) { if (nRows == 0) {
return Value(Eigen::Matrix4d()); return Value(Eigen::Matrix4d());
} }
row = PyTuple_GetItem(pyObject, 0); row = PySequence_GetItem(pyObject, 0);
if (!PyTuple_Check(row)) { if (!PySequence_Check(row)) {
throw ExceptionPython(ExceptionPython::MATRIX_PARSING, throw ExceptionPython(ExceptionPython::MATRIX_PARSING,
"matrix4d"); "matrix4d");
} }
nCols = PyTuple_Size(row); nCols = PySequence_Size(row);
m4.resize(nRows, nCols); m4.resize(nRows, nCols);
fillMatrixRow(m4, 0, row); fillMatrixRow(m4, 0, row);
for (Py_ssize_t iRow=1; iRow<nRows; iRow++) { for (Py_ssize_t iRow=1; iRow<nRows; iRow++) {
row = PyTuple_GetItem(pyObject, iRow); row = PySequence_GetItem(pyObject, iRow);
if (!PyTuple_Check(row)) { if (!PySequence_Check(row)) {
throw ExceptionPython(ExceptionPython::MATRIX_PARSING, throw ExceptionPython(ExceptionPython::MATRIX_PARSING,
"matrix"); "matrix");
} }
...@@ -321,3 +321,4 @@ namespace dynamicgraph { ...@@ -321,3 +321,4 @@ namespace dynamicgraph {
} // namespace dynamicgraph } // namespace dynamicgraph
} // namespace python } // namespace python
} // namespace convert } // namespace convert
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