Skip to content

Commit

Permalink
Merge pull request #125 from jcarpent/devel
Browse files Browse the repository at this point in the history
Improve conversion checking
  • Loading branch information
jcarpent authored Nov 16, 2019
2 parents ff7cb4d + fd2dcb6 commit 1acbed4
Showing 1 changed file with 38 additions and 2 deletions.
40 changes: 38 additions & 2 deletions include/eigenpy/details.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,17 +378,43 @@ namespace eigenpy

if(MatType::IsVectorAtCompileTime)
{
const Eigen::DenseIndex size_at_compile_time
= MatType::IsRowMajor
? MatType::ColsAtCompileTime
: MatType::RowsAtCompileTime;

switch(PyArray_NDIM(pyArray))
{
case 0:
return 0;
case 1:
return pyArray;
{
if(size_at_compile_time != Eigen::Dynamic)
{
// check that the sizes at compile time matche
if(PyArray_DIMS(pyArray)[0] == size_at_compile_time)
return pyArray;
else
return 0;
}
else // This is a dynamic MatType
return pyArray;
}
case 2:
{
// Special care of scalar matrix of dimension 1x1.
if(PyArray_DIMS(pyArray)[0] == 1 && PyArray_DIMS(pyArray)[1] == 1)
return pyArray;
{
if(size_at_compile_time != Eigen::Dynamic)
{
if(size_at_compile_time == 1)
return pyArray;
else
return 0;
}
else // This is a dynamic MatType
return pyArray;
}

if(PyArray_DIMS(pyArray)[0] > 1 && PyArray_DIMS(pyArray)[1] > 1)
{
Expand All @@ -409,6 +435,16 @@ namespace eigenpy
#endif
return 0;
}

if(size_at_compile_time != Eigen::Dynamic)
{ // This is a fixe size vector
const Eigen::DenseIndex pyArray_size
= PyArray_DIMS(pyArray)[0] > PyArray_DIMS(pyArray)[1]
? PyArray_DIMS(pyArray)[0]
: PyArray_DIMS(pyArray)[1];
if(size_at_compile_time != pyArray_size)
return 0;
}
break;
}
default:
Expand Down

0 comments on commit 1acbed4

Please sign in to comment.