diff --git a/CMakeLists.txt b/CMakeLists.txt index a7bb4914ffe9e2117c2a9380baa31cdbd56ade50..43d10098f3d446202f12221184bd1d5c70722c33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,6 +141,14 @@ SET(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_DECOMPOSITIONS_SOURCES} src/exception.cpp src/eigenpy.cpp + src/matrix-float.cpp + src/matrix-complex-float.cpp + src/matrix-complex-double.cpp + src/matrix-double.cpp + src/matrix-long-double.cpp + src/matrix-complex-long-double.cpp + src/matrix-int.cpp + src/matrix-long.cpp src/angle-axis.cpp src/quaternion.cpp src/geometry-conversion.cpp diff --git a/src/eigenpy.cpp b/src/eigenpy.cpp index 9956e65804b0b0e296c5723f6ae6a1c1a2d61193..c85030b1ff9d87a689ec609635f5caba42f39fb5 100644 --- a/src/eigenpy.cpp +++ b/src/eigenpy.cpp @@ -6,38 +6,6 @@ #include "eigenpy/eigenpy.hpp" #include <stdlib.h> -namespace Eigen -{ - #define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \ - /** \ingroup matrixtypedefs */ \ - typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix; - - #define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \ - /** \ingroup matrixtypedefs */ \ - typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix; - - #define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \ - EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \ - EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \ - EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \ - EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \ - EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \ - EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \ - EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4) - - EIGEN_MAKE_TYPEDEFS_ALL_SIZES(long double, ld) - EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<long double>, cld) - - #undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES - #undef EIGEN_MAKE_TYPEDEFS - #undef EIGEN_MAKE_FIXED_TYPEDEFS -} namespace eigenpy { @@ -47,6 +15,16 @@ namespace eigenpy srand(seed_value); } + void exposeMatrixInt(); + void exposeMatrixLong(); + void exposeMatrixFloat(); + void exposeMatrixDouble(); + void exposeMatrixLongDouble(); + + void exposeMatrixComplexFloat(); + void exposeMatrixComplexDouble(); + void exposeMatrixComplexLongDouble(); + /* Enable Eigen-Numpy serialization for a set of standard MatrixBase instances. */ void enableEigenPy() { @@ -70,147 +48,15 @@ namespace eigenpy bp::def("seed",&seed,bp::arg("seed_value"), "Initialize the pseudo-random number generator with the argument seed_value."); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2d); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2f); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2i); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xld); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xi); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3d); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3f); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3i); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xi); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4d); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4f); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4i); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xld); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xi); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcf); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcd); - ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcld); - - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2ld); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2d); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2f); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2i); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cf); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cd); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3ld); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3d); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3f); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3i); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cf); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cd); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4ld); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4d); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4f); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4i); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cf); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cd); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXld); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXd); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXf); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXi); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcf); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcd); - ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcld); - - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2ld); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2d); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2f); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2i); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cf); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cd); - - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3ld); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3d); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3f); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3i); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cf); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cd); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4ld); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4d); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4f); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4i); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cf); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cd); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXld); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXd); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXf); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXi); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcf); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcd); - ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2d); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2f); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2i); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3d); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3f); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3i); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cld); - - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4ld); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4d); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4f); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4i); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cf); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cd); - ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cld); + exposeMatrixInt(); + exposeMatrixLong(); + exposeMatrixFloat(); + exposeMatrixDouble(); + exposeMatrixLongDouble(); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXld); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXd); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXf); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXi); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcf); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcd); - ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcld); + exposeMatrixComplexFloat(); + exposeMatrixComplexDouble(); + exposeMatrixComplexLongDouble(); } } // namespace eigenpy diff --git a/src/matrix-complex-double.cpp b/src/matrix-complex-double.cpp new file mode 100644 index 0000000000000000000000000000000000000000..899f88fcc7ba53faf94f577fcd5c02844ef74e79 --- /dev/null +++ b/src/matrix-complex-double.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixComplexDouble() + { + exposeType<std::complex<double> >(); + } +} diff --git a/src/matrix-complex-float.cpp b/src/matrix-complex-float.cpp new file mode 100644 index 0000000000000000000000000000000000000000..323c52d761d71c4427e610f40f3679409ad87343 --- /dev/null +++ b/src/matrix-complex-float.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixComplexFloat() + { + exposeType<std::complex<float> >(); + } +} diff --git a/src/matrix-complex-long-double.cpp b/src/matrix-complex-long-double.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1f987ae10ef913941d9a34d70362f7f11ae41779 --- /dev/null +++ b/src/matrix-complex-long-double.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixComplexLongDouble() + { + exposeType<std::complex<long double> >(); + } +} diff --git a/src/matrix-double.cpp b/src/matrix-double.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dc84a9c257af26261b39093872dda7c4acb70a30 --- /dev/null +++ b/src/matrix-double.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixDouble() + { + exposeType<double>(); + } +} diff --git a/src/matrix-float.cpp b/src/matrix-float.cpp new file mode 100644 index 0000000000000000000000000000000000000000..100b8e9ee77799a0d0cb8e4484abced47a5e3f78 --- /dev/null +++ b/src/matrix-float.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixFloat() + { + exposeType<float>(); + } +} diff --git a/src/matrix-int.cpp b/src/matrix-int.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a4b0d8b2f8f1803350330df7558ca7e764032e5c --- /dev/null +++ b/src/matrix-int.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixInt() + { + exposeType<int>(); + } +} diff --git a/src/matrix-long-double.cpp b/src/matrix-long-double.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1b2a8f71eed54fa5620ff446e8b000f29a7499ce --- /dev/null +++ b/src/matrix-long-double.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixLongDouble() + { + exposeType<long double>(); + } +} diff --git a/src/matrix-long.cpp b/src/matrix-long.cpp new file mode 100644 index 0000000000000000000000000000000000000000..835b6cce0c227305b4a0e203cedfed5f04a56a9e --- /dev/null +++ b/src/matrix-long.cpp @@ -0,0 +1,13 @@ +/* + * Copyright 2020 INRIA + */ + +#include "eigenpy/eigenpy.hpp" + +namespace eigenpy +{ + void exposeMatrixLong() + { + exposeType<long>(); + } +}