diff --git a/CMakeLists.txt b/CMakeLists.txt index 762bc035b..133f9f82e 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 000000000..c8a05a2f0 --- /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 Matrix##SizeSuffix##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix Vector##SizeSuffix##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix RowVector##SizeSuffix##TypeSuffix; + +#define EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, Size) \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix Matrix##Size##X##TypeSuffix; \ + /** \ingroup matrixtypedefs */ \ + typedef Eigen::Matrix 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 49544cca6..e33442a72 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(); -#define EIGENPY_MAKE_TYPEDEFS(Type, Options, TypeSuffix, Size, SizeSuffix) \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix Matrix##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix Vector##SizeSuffix##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix RowVector##SizeSuffix##TypeSuffix; - -#define EIGENPY_MAKE_FIXED_TYPEDEFS(Type, Options, TypeSuffix, Size) \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix Matrix##Size##X##TypeSuffix; \ - /** \ingroup matrixtypedefs */ \ - typedef Eigen::Matrix 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 {