Eigen  5.0.1
 
Loading...
Searching...
No Matches
ReshapedMethods.inc
1// SPDX-FileCopyrightText: The Eigen Authors
2// SPDX-License-Identifier: MPL-2.0
3
4#ifdef EIGEN_PARSED_BY_DOXYGEN
5
31template <int Order = ColMajor, typename NRowsType, typename NColsType>
32EIGEN_DEVICE_FUNC constexpr inline Reshaped<Derived, ...> reshaped(NRowsType nRows, NColsType nCols);
33
35template <int Order = ColMajor, typename NRowsType, typename NColsType>
36EIGEN_DEVICE_FUNC constexpr inline const Reshaped<const Derived, ...> reshaped(NRowsType nRows, NColsType nCols) const;
37
60template <int Order = ColMajor>
61EIGEN_DEVICE_FUNC constexpr inline Reshaped<Derived, ...> reshaped();
62
64template <int Order = ColMajor>
65EIGEN_DEVICE_FUNC constexpr inline const Reshaped<const Derived, ...> reshaped() const;
66
67#else
68
69// This file is automatically included twice to generate const and non-const versions
70
71#ifndef EIGEN_RESHAPED_METHOD_2ND_PASS
72#define EIGEN_RESHAPED_METHOD_CONST const
73#else
74#define EIGEN_RESHAPED_METHOD_CONST
75#endif
76
77#ifndef EIGEN_RESHAPED_METHOD_2ND_PASS
78
79// This part is included once
80
81#endif
82
83template <typename NRowsType, typename NColsType>
84EIGEN_DEVICE_FUNC constexpr inline Reshaped<
85 EIGEN_RESHAPED_METHOD_CONST Derived,
86 internal::get_compiletime_reshape_size<NRowsType, NColsType, SizeAtCompileTime>::value,
87 internal::get_compiletime_reshape_size<NColsType, NRowsType, SizeAtCompileTime>::value>
88reshaped(NRowsType nRows, NColsType nCols) EIGEN_RESHAPED_METHOD_CONST {
89 return Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived,
90 internal::get_compiletime_reshape_size<NRowsType, NColsType, SizeAtCompileTime>::value,
91 internal::get_compiletime_reshape_size<NColsType, NRowsType, SizeAtCompileTime>::value>(
92 derived(), internal::get_runtime_reshape_size(nRows, internal::get_runtime_value(nCols), size()),
93 internal::get_runtime_reshape_size(nCols, internal::get_runtime_value(nRows), size()));
94}
95
96template <int Order, typename NRowsType, typename NColsType>
97EIGEN_DEVICE_FUNC constexpr inline Reshaped<
98 EIGEN_RESHAPED_METHOD_CONST Derived,
99 internal::get_compiletime_reshape_size<NRowsType, NColsType, SizeAtCompileTime>::value,
100 internal::get_compiletime_reshape_size<NColsType, NRowsType, SizeAtCompileTime>::value,
101 internal::get_compiletime_reshape_order(Flags, Order)>
102reshaped(NRowsType nRows, NColsType nCols) EIGEN_RESHAPED_METHOD_CONST {
103 return Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived,
104 internal::get_compiletime_reshape_size<NRowsType, NColsType, SizeAtCompileTime>::value,
105 internal::get_compiletime_reshape_size<NColsType, NRowsType, SizeAtCompileTime>::value,
106 internal::get_compiletime_reshape_order(Flags, Order)>(
107 derived(), internal::get_runtime_reshape_size(nRows, internal::get_runtime_value(nCols), size()),
108 internal::get_runtime_reshape_size(nCols, internal::get_runtime_value(nRows), size()));
109}
110
111// Views as linear vectors
112
113EIGEN_DEVICE_FUNC constexpr inline Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived, SizeAtCompileTime, 1> reshaped()
114 EIGEN_RESHAPED_METHOD_CONST {
115 return Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived, SizeAtCompileTime, 1>(derived(), size(), 1);
116}
117
118template <int Order>
119EIGEN_DEVICE_FUNC constexpr inline Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived, SizeAtCompileTime, 1,
120 internal::get_compiletime_reshape_order(Flags, Order)>
121reshaped() EIGEN_RESHAPED_METHOD_CONST {
122 EIGEN_STATIC_ASSERT(Order == RowMajor || Order == ColMajor || Order == AutoOrder, INVALID_TEMPLATE_PARAMETER);
123 return Reshaped<EIGEN_RESHAPED_METHOD_CONST Derived, SizeAtCompileTime, 1,
124 internal::get_compiletime_reshape_order(Flags, Order)>(derived(), size(), 1);
125}
126
127#undef EIGEN_RESHAPED_METHOD_CONST
128
129#ifndef EIGEN_RESHAPED_METHOD_2ND_PASS
130#define EIGEN_RESHAPED_METHOD_2ND_PASS
131#include "ReshapedMethods.inc"
132#undef EIGEN_RESHAPED_METHOD_2ND_PASS
133#endif
134
135#endif // EIGEN_PARSED_BY_DOXYGEN