diff options
-rw-r--r-- | Eigen/src/Core/Reshaped.h | 17 | ||||
-rw-r--r-- | Eigen/src/plugins/ReshapedMethods.h | 41 | ||||
-rw-r--r-- | doc/examples/class_FixedReshaped.cpp (renamed from doc/examples/class_FixedReshape.cpp) | 4 | ||||
-rw-r--r-- | doc/examples/class_Reshaped.cpp (renamed from doc/examples/class_Reshape.cpp) | 6 | ||||
-rw-r--r-- | doc/snippets/MatrixBase_reshaped_fixed.cpp | 2 | ||||
-rw-r--r-- | doc/snippets/MatrixBase_reshaped_int_int.cpp | 2 |
6 files changed, 46 insertions, 26 deletions
diff --git a/Eigen/src/Core/Reshaped.h b/Eigen/src/Core/Reshaped.h index 655baa2a2..a6acfd5f4 100644 --- a/Eigen/src/Core/Reshaped.h +++ b/Eigen/src/Core/Reshaped.h @@ -13,7 +13,7 @@ namespace Eigen { -/** \class Reshapedd +/** \class Reshaped * \ingroup Core_Module * * \brief Expression of a fixed-size or dynamic-size reshape @@ -23,27 +23,24 @@ namespace Eigen { * \tparam Cols the number of columns of the reshape we are taking at compile time (optional) * \tparam Order * - * This class represents an expression of either a fixed-size or dynamic-size reshape. It is the return - * type of DenseBase::reshaped(Index,Index) and DenseBase::reshape<int,int>() and + * This class represents an expression of either a fixed-size or dynamic-size reshape. + * It is the return type of DenseBase::reshaped(NRowsType,NColsType) and * most of the time this is the only way it is used. * - * However, if you want to directly maniputate reshape expressions, + * However, in C++98, if you want to directly maniputate reshaped expressions, * for instance if you want to write a function returning such an expression, you - * will need to use this class. + * will need to use this class. In C++11, it is advised to use the \em auto + * keyword for such use cases. * * Here is an example illustrating the dynamic case: * \include class_Reshaped.cpp * Output: \verbinclude class_Reshaped.out * - * \note Even though this expression has dynamic size, in the case where \a XprType - * has fixed size, this expression inherits a fixed maximal size which means that evaluating - * it does not cause a dynamic memory allocation. - * * Here is an example illustrating the fixed-size case: * \include class_FixedReshaped.cpp * Output: \verbinclude class_FixedReshaped.out * - * \sa DenseBase::reshaped(Index,Index), DenseBase::reshaped(), class VectorReshaped + * \sa DenseBase::reshaped(NRowsType,NColsType) */ namespace internal { diff --git a/Eigen/src/plugins/ReshapedMethods.h b/Eigen/src/plugins/ReshapedMethods.h index 20563c2f9..a9b4af7c3 100644 --- a/Eigen/src/plugins/ReshapedMethods.h +++ b/Eigen/src/plugins/ReshapedMethods.h @@ -17,30 +17,53 @@ /// /// \sa class Reshaped, fix, fix<N>(int) /// +#ifdef EIGEN_PARSED_BY_DOXYGEN +template<typename NRowsType, typename NColsType, typename OrderType> +EIGEN_DEVICE_FUNC +inline Reshaped<Derived,...> +reshaped(NRowsType nRows, NColsType nCols, OrderType = ColOrder); + +/** This is the const version of reshaped(NRowsType,NColsType). */ +template<typename NRowsType, typename NColsType, typename OrderType> +EIGEN_DEVICE_FUNC +inline const Reshaped<const Derived,...> +reshaped(NRowsType nRows, NColsType nCols, OrderType = ColOrder) const; +#else template<typename NRowsType, typename NColsType> EIGEN_DEVICE_FUNC -#ifndef EIGEN_PARSED_BY_DOXYGEN inline Reshaped<Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value> -#else -inline Reshaped<Derived,...> -#endif reshaped(NRowsType nRows, NColsType nCols) { return Reshaped<Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>( derived(), internal::get_runtime_value(nRows), internal::get_runtime_value(nCols)); } -/** This is the const version of reshaped(NRowsType,NColsType). */ +template<typename NRowsType, typename NColsType, typename OrderType> +EIGEN_DEVICE_FUNC +inline Reshaped<Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value,OrderType::value> +reshaped(NRowsType nRows, NColsType nCols, OrderType) +{ + return Reshaped<Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value,OrderType::value>( + derived(), internal::get_runtime_value(nRows), internal::get_runtime_value(nCols)); +} + + template<typename NRowsType, typename NColsType> EIGEN_DEVICE_FUNC -#ifndef EIGEN_PARSED_BY_DOXYGEN inline const Reshaped<const Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value> -#else -inline const Reshaped<const Derived,...> -#endif reshaped(NRowsType nRows, NColsType nCols) const { return Reshaped<const Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value>( derived(), internal::get_runtime_value(nRows), internal::get_runtime_value(nCols)); } +template<typename NRowsType, typename NColsType, typename OrderType> +EIGEN_DEVICE_FUNC +inline const Reshaped<const Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value,OrderType::value> +reshaped(NRowsType nRows, NColsType nCols, OrderType) const +{ + return Reshaped<const Derived,internal::get_fixed_value<NRowsType>::value,internal::get_fixed_value<NColsType>::value,OrderType::value>( + derived(), internal::get_runtime_value(nRows), internal::get_runtime_value(nCols)); +} + +#endif // EIGEN_PARSED_BY_DOXYGEN diff --git a/doc/examples/class_FixedReshape.cpp b/doc/examples/class_FixedReshaped.cpp index 40156a123..b6d4085de 100644 --- a/doc/examples/class_FixedReshape.cpp +++ b/doc/examples/class_FixedReshaped.cpp @@ -4,10 +4,10 @@ using namespace Eigen; using namespace std; template<typename Derived> -Eigen::Reshape<Derived, 4, 2> +Eigen::Reshaped<Derived, 4, 2> reshape_helper(MatrixBase<Derived>& m) { - return Eigen::Reshape<Derived, 4, 2>(m.derived()); + return Eigen::Reshaped<Derived, 4, 2>(m.derived()); } int main(int, char**) diff --git a/doc/examples/class_Reshape.cpp b/doc/examples/class_Reshaped.cpp index b9abdc2d5..18fb45454 100644 --- a/doc/examples/class_Reshape.cpp +++ b/doc/examples/class_Reshaped.cpp @@ -4,10 +4,10 @@ using namespace std; using namespace Eigen; template<typename Derived> -const Reshape<const Derived> +const Reshaped<const Derived> reshape_helper(const MatrixBase<Derived>& m, int rows, int cols) { - return Reshape<const Derived>(m.derived(), rows, cols); + return Reshaped<const Derived>(m.derived(), rows, cols); } int main(int, char**) @@ -17,7 +17,7 @@ int main(int, char**) 2, 5, 8, 11, 3, 6, 9, 12; cout << m << endl; - auto n = reshape_helper(m, 2, 6); + Ref<const MatrixXd> n = reshape_helper(m, 2, 6); cout << "Matrix m is:" << endl << m << endl; cout << "Matrix n is:" << endl << n << endl; } diff --git a/doc/snippets/MatrixBase_reshaped_fixed.cpp b/doc/snippets/MatrixBase_reshaped_fixed.cpp index 611205929..a268ee5ae 100644 --- a/doc/snippets/MatrixBase_reshaped_fixed.cpp +++ b/doc/snippets/MatrixBase_reshaped_fixed.cpp @@ -1,3 +1,3 @@ Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; -cout << "Here is m.reshape(fix<2>,fix<8>):" << endl << m.reshape(fix<2>,fix<8>) << endl; +cout << "Here is m.reshape(fix<2>,fix<8>):" << endl << m.reshaped(fix<2>,fix<8>) << endl; diff --git a/doc/snippets/MatrixBase_reshaped_int_int.cpp b/doc/snippets/MatrixBase_reshaped_int_int.cpp index 1169cdb2d..4486d8347 100644 --- a/doc/snippets/MatrixBase_reshaped_int_int.cpp +++ b/doc/snippets/MatrixBase_reshaped_int_int.cpp @@ -1,3 +1,3 @@ Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; -cout << "Here is m.reshape(2, 8):" << endl << m.reshape(2, 8) << endl; +cout << "Here is m.reshape(2, 8):" << endl << m.reshaped(2, 8) << endl; |