diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-02-20 13:22:39 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-02-20 13:22:39 +0000 |
commit | 7195f008ced2ec7fc8a1926d06b7cd797e9f3642 (patch) | |
tree | 95a7f720b757ef960b938c3ba5c7ed86c457b756 /Eigen | |
parent | 4e8047cdcf9a527fa1a0178c370e600eefbcb8b7 (diff) | |
parent | e19b58e672eed1489c32dd008d0ed1da6cf1af52 (diff) |
Merged in ra_bauke/eigen (pull request PR-180)
alias template for matrix and array classes, see also bug #864
Approved-by: Heiko Bauke <heiko.bauke@mail.de>
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/Array.h | 33 | ||||
-rw-r--r-- | Eigen/src/Core/Matrix.h | 34 |
2 files changed, 65 insertions, 2 deletions
diff --git a/Eigen/src/Core/Array.h b/Eigen/src/Core/Array.h index e58e68eda..039f41a3d 100644 --- a/Eigen/src/Core/Array.h +++ b/Eigen/src/Core/Array.h @@ -350,8 +350,37 @@ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<double>, cd) #undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES #undef EIGEN_MAKE_ARRAY_TYPEDEFS -#undef EIGEN_MAKE_ARRAY_TYPEDEFS_LARGE - +#if __cplusplus>=201103L + +#define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Array##SizeSuffix##SizeSuffix = Array<Type, Size, Size>; \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Array##SizeSuffix = Array<Type, Size, 1>; + +#define EIGEN_MAKE_FIXED_TYPEDEFS(Size) \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Array##Size##X = Array<Type, Size, Dynamic>; \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Array##X##Size = Array<Type, Dynamic, Size>; + +EIGEN_MAKE_TYPEDEFS(2, 2) +EIGEN_MAKE_TYPEDEFS(3, 3) +EIGEN_MAKE_TYPEDEFS(4, 4) +EIGEN_MAKE_TYPEDEFS(Dynamic, X) +EIGEN_MAKE_FIXED_TYPEDEFS(2) +EIGEN_MAKE_FIXED_TYPEDEFS(3) +EIGEN_MAKE_FIXED_TYPEDEFS(4) + +#undef EIGEN_MAKE_TYPEDEFS +#undef EIGEN_MAKE_FIXED_TYPEDEFS + +#endif // __cplusplus>=201103L + #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \ using Eigen::Matrix##SizeSuffix##TypeSuffix; \ using Eigen::Vector##SizeSuffix##TypeSuffix; \ diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index 02c70803f..ea5f7da78 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -499,6 +499,40 @@ EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd) #undef EIGEN_MAKE_TYPEDEFS #undef EIGEN_MAKE_FIXED_TYPEDEFS +#if __cplusplus>=201103L + +#define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix) \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Matrix##SizeSuffix = Matrix<Type, Size, Size>; \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Vector##SizeSuffix = Matrix<Type, Size, 1>; \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using RowVector##SizeSuffix = Matrix<Type, 1, Size>; + +#define EIGEN_MAKE_FIXED_TYPEDEFS(Size) \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Matrix##Size##X = Matrix<Type, Size, Dynamic>; \ +/** \ingroup matrixtypedefs */ \ +template <typename Type> \ +using Matrix##X##Size = Matrix<Type, Dynamic, Size>; + +EIGEN_MAKE_TYPEDEFS(2, 2) +EIGEN_MAKE_TYPEDEFS(3, 3) +EIGEN_MAKE_TYPEDEFS(4, 4) +EIGEN_MAKE_TYPEDEFS(Dynamic, X) +EIGEN_MAKE_FIXED_TYPEDEFS(2) +EIGEN_MAKE_FIXED_TYPEDEFS(3) +EIGEN_MAKE_FIXED_TYPEDEFS(4) + +#undef EIGEN_MAKE_TYPEDEFS +#undef EIGEN_MAKE_FIXED_TYPEDEFS + +#endif // __cplusplus>=201103L + } // end namespace Eigen #endif // EIGEN_MATRIX_H |