aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2017-02-11 15:31:28 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2017-02-11 15:31:28 +0100
commit83d6a529c3a917763b35aafe8cd5b3b7478fcee6 (patch)
tree931640b3d66c2cae526995c438eb64000dbae52f /Eigen/src
parent24409f3acdd987f2734cb3b67d5a78e1d70fd362 (diff)
Use Eigen::fix<N> to pass compile-time sizes.
Diffstat (limited to 'Eigen/src')
-rw-r--r--Eigen/src/Core/Reshaped.h17
-rw-r--r--Eigen/src/plugins/ReshapedMethods.h41
2 files changed, 39 insertions, 19 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