aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Core/Reshaped.h17
-rw-r--r--Eigen/src/plugins/ReshapedMethods.h41
-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.cpp2
-rw-r--r--doc/snippets/MatrixBase_reshaped_int_int.cpp2
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;