diff --git a/CMakeLists.txt b/CMakeLists.txt index 762bc035bdc10226c296a347425736789433b247..133f9f82e340801195d711d9f946dc59be64ee1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,6 +113,7 @@ SET(${PROJECT_NAME}_HEADERS include/eigenpy/eigen-allocator.hpp include/eigenpy/eigen-to-python.hpp include/eigenpy/eigen-from-python.hpp + include/eigenpy/eigen-typedef.hpp include/eigenpy/numpy-map.hpp include/eigenpy/geometry.hpp include/eigenpy/geometry-conversion.hpp diff --git a/include/eigenpy/eigen-typedef.hpp b/include/eigenpy/eigen-typedef.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c8a05a2f0f5ff94ccb6518698d8bb0fac49ad5dd --- /dev/null +++ b/include/eigenpy/eigen-typedef.hpp @@ -0,0 +1,33 @@ +// +// Copyright (c) 2020 INRIA +// + +#ifndef __eigenpy_eigen_typedef_hpp__ +#define __eigenpy_eigen_typedef_hpp__ + +#include "eigenpy/fwd.hpp" + +#define EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Size, SizeSuffix) \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix<Type, Size, Size, Options> Matrix##SizeSuffix##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix; + +#define EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, Size) \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix<Type, Size, Eigen::Dynamic, Options> Matrix##Size##X##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix<Type, Eigen::Dynamic, Size, Options> Matrix##X##Size##TypeSuffix; + +#define EIGENPY_MAKE_TYPEDEFS_ALL_SIZES(Type, Options, TypeSuffix) \ + EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 2, 2) \ + EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 3, 3) \ + EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 4, 4) \ + EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Eigen::Dynamic, X) \ + EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 2) \ + EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 3) \ + EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 4) + +#endif // ifndef __eigenpy_eigen_typedef_hpp__ diff --git a/include/eigenpy/eigenpy.hpp b/include/eigenpy/eigenpy.hpp index 49544cca6997a963c53cb645c10522677e268acd..e33442a72961e615d4fd237cdd59f1be2839f665 100644 --- a/include/eigenpy/eigenpy.hpp +++ b/include/eigenpy/eigenpy.hpp @@ -9,33 +9,11 @@ #include "eigenpy/fwd.hpp" #include "eigenpy/deprecated.hpp" #include "eigenpy/config.hpp" +#include "eigenpy/eigen-typedef.hpp" #define ENABLE_SPECIFIC_MATRIX_TYPE(TYPE) \ ::eigenpy::enableEigenPySpecific<TYPE>(); -#define EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Size, SizeSuffix) \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix<Type, Size, Size, Options> Matrix##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix; - -#define EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, Size) \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix<Type, Size, Eigen::Dynamic, Options> Matrix##Size##X##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix<Type, Eigen::Dynamic, Size, Options> Matrix##X##Size##TypeSuffix; - -#define EIGENPY_MAKE_TYPEDEFS_ALL_SIZES(Type, Options, TypeSuffix) \ - EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 2, 2) \ - EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 3, 3) \ - EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, 4, 4) \ - EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Eigen::Dynamic, X) \ - EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 2) \ - EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 3) \ - EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, 4) - namespace eigenpy {