11 #ifndef EIGEN_MAPBASE_H
12 #define EIGEN_MAPBASE_H
14 #define EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived) \
15 EIGEN_STATIC_ASSERT((int(internal::evaluator<Derived>::Flags) & LinearAccessBit) || Derived::IsVectorAtCompileTime, \
16 YOU_ARE_TRYING_TO_USE_AN_INDEX_BASED_ACCESSOR_ON_AN_EXPRESSION_THAT_DOES_NOT_SUPPORT_THAT)
40 template <
typename Derived>
48 SizeAtCompileTime = Base::SizeAtCompileTime
62 using Base::IsRowMajor;
63 using Base::IsVectorAtCompileTime;
64 using Base::MaxColsAtCompileTime;
65 using Base::MaxRowsAtCompileTime;
66 using Base::MaxSizeAtCompileTime;
72 using Base::lazyAssign;
76 using Base::colStride;
77 using Base::innerStride;
78 using Base::outerStride;
79 using Base::rowStride;
82 using Base::operator=;
101 return m_data[colId * colStride() + rowId * rowStride()];
107 return m_data[index * innerStride()];
112 return this->m_data[colId * colStride() + rowId * rowStride()];
118 return this->m_data[index * innerStride()];
122 template <
int LoadMode>
124 return internal::ploadt<PacketScalar, LoadMode>(m_data + (colId * colStride() + rowId * rowStride()));
128 template <
int LoadMode>
131 return internal::ploadt<PacketScalar, LoadMode>(m_data + index * innerStride());
136 : m_data(dataPtr), m_rows(RowsAtCompileTime), m_cols(ColsAtCompileTime) {
138 checkSanity<Derived>();
144 m_rows(RowsAtCompileTime ==
Dynamic ? vecSize :
Index(RowsAtCompileTime)),
145 m_cols(ColsAtCompileTime ==
Dynamic ? vecSize :
Index(ColsAtCompileTime)) {
148 eigen_assert(dataPtr == 0 || SizeAtCompileTime ==
Dynamic || SizeAtCompileTime == vecSize);
149 checkSanity<Derived>();
154 : m_data(dataPtr), m_rows(
rows), m_cols(
cols) {
156 cols >= 0 && (ColsAtCompileTime ==
Dynamic || ColsAtCompileTime ==
cols)));
157 checkSanity<Derived>();
160 #ifdef EIGEN_MAPBASE_PLUGIN
161 #include EIGEN_MAPBASE_PLUGIN
168 template <
typename T>
172 #ifndef EIGEN_ALLOW_UNALIGNED_SCALARS
174 eigen_assert((std::uintptr_t(m_data) %
alignof(
Scalar) == 0) &&
"data is not scalar-aligned");
176 #if EIGEN_MAX_ALIGN_BYTES > 0
179 const Index minInnerStride = InnerStrideAtCompileTime ==
Dynamic ? 1 :
Index(InnerStrideAtCompileTime);
183 "data is not aligned");
187 template <
typename T>
189 #ifndef EIGEN_ALLOW_UNALIGNED_SCALARS
191 eigen_assert((std::uintptr_t(m_data) %
alignof(
Scalar) == 0) &&
"data is not scalar-aligned");
210 template <
typename Derived>
223 using Base::coeffRef;
229 using Base::colStride;
230 using Base::innerStride;
231 using Base::outerStride;
232 using Base::rowStride;
242 return this->m_data[
col * colStride() +
row * rowStride()];
247 return this->m_data[index * innerStride()];
250 template <
int StoreMode>
252 internal::pstoret<Scalar, PacketScalar, StoreMode>(this->m_data + (
col * colStride() +
row * rowStride()),
val);
255 template <
int StoreMode>
258 internal::pstoret<Scalar, PacketScalar, StoreMode>(this->m_data + index * innerStride(),
val);
266 ReadOnlyMapBase::Base::operator=(other);
272 using ReadOnlyMapBase::Base::operator=;
279 #undef EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS
#define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS)
Macro to explicitly define the default copy constructor. This is necessary, because the implicit defi...
Definition: Macros.h:1119
#define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived)
Macro to manually define default constructors and destructors. This is necessary when the copy constr...
Definition: Macros.h:1137
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:922
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
Definition: MapBase.h:14
#define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE)
Definition: StaticAssert.h:40
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition: StaticAssert.h:36
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Base class for dense Map and Block expression with direct access.
Definition: MapBase.h:41
constexpr EIGEN_DEVICE_FUNC const Scalar * data() const
Definition: MapBase.h:97
PacketScalar packet(Index rowId, Index colId) const
Definition: MapBase.h:123
internal::dense_xpr_base< Derived >::type Base
Definition: MapBase.h:43
internal::packet_traits< Scalar >::type PacketScalar
Definition: MapBase.h:53
EIGEN_DEVICE_FUNC const Scalar & coeff(Index index) const
Definition: MapBase.h:105
Base::CoeffReturnType CoeffReturnType
Definition: MapBase.h:84
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr, Index vecSize)
Definition: MapBase.h:142
EIGEN_DEVICE_FUNC void checkSanity(std::enable_if_t<(internal::traits< T >::Alignment > 0), void * >=0) const
Definition: MapBase.h:169
PacketScalar packet(Index index) const
Definition: MapBase.h:129
std::conditional_t< bool(internal::is_lvalue< Derived >::value), Scalar *, const Scalar * > PointerType
Definition: MapBase.h:55
const internal::variable_if_dynamic< Index, ColsAtCompileTime > m_cols
Definition: MapBase.h:197
PointerType m_data
Definition: MapBase.h:195
EIGEN_DEVICE_FUNC const Scalar & coeffRef(Index index) const
Definition: MapBase.h:116
internal::traits< Derived >::Scalar Scalar
Definition: MapBase.h:52
EIGEN_DEVICE_FUNC const Scalar & coeff(Index rowId, Index colId) const
Definition: MapBase.h:100
const internal::variable_if_dynamic< Index, RowsAtCompileTime > m_rows
Definition: MapBase.h:196
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr)
Definition: MapBase.h:135
NumTraits< Scalar >::Real RealScalar
Definition: MapBase.h:54
EIGEN_DEVICE_FUNC const Scalar & coeffRef(Index rowId, Index colId) const
Definition: MapBase.h:111
EIGEN_DEVICE_FUNC void checkSanity(std::enable_if_t< internal::traits< T >::Alignment==0, void * >=0) const
Definition: MapBase.h:188
internal::traits< Derived >::StorageKind StorageKind
Definition: MapBase.h:51
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr, Index rows, Index cols)
Definition: MapBase.h:153
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: MapBase.h:87
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: MapBase.h:89
Base::PacketScalar PacketScalar
Definition: MapBase.h:218
constexpr EIGEN_DEVICE_FUNC ScalarWithConstIfNotLvalue * data()
Definition: MapBase.h:237
EIGEN_DEVICE_FUNC Derived & operator=(const MapBase &other)
Definition: MapBase.h:265
EIGEN_DEVICE_FUNC ScalarWithConstIfNotLvalue & coeffRef(Index index)
Definition: MapBase.h:245
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr)
Definition: MapBase.h:261
MapBase< Derived, ReadOnlyAccessors > Base
Definition: MapBase.h:215
Base::StorageIndex StorageIndex
Definition: MapBase.h:219
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr, Index vecSize)
Definition: MapBase.h:262
void writePacket(Index row, Index col, const PacketScalar &val)
Definition: MapBase.h:251
MapBase< Derived, ReadOnlyAccessors > ReadOnlyMapBase
Definition: MapBase.h:212
Base::PointerType PointerType
Definition: MapBase.h:220
std::conditional_t< internal::is_lvalue< Derived >::value, Scalar, const Scalar > ScalarWithConstIfNotLvalue
Definition: MapBase.h:234
void writePacket(Index index, const PacketScalar &val)
Definition: MapBase.h:256
EIGEN_DEVICE_FUNC MapBase(PointerType dataPtr, Index rows, Index cols)
Definition: MapBase.h:263
EIGEN_DEVICE_FUNC ScalarWithConstIfNotLvalue & coeffRef(Index row, Index col)
Definition: MapBase.h:241
Base::Scalar Scalar
Definition: MapBase.h:217
constexpr EIGEN_DEVICE_FUNC const Scalar * data() const
Definition: MapBase.h:236
Definition: ForwardDeclarations.h:150
@ ReadOnlyAccessors
Definition: Constants.h:372
@ WriteAccessors
Definition: Constants.h:374
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int Dynamic
Definition: Constants.h:25
val
Definition: calibrate.py:119
type
Definition: compute_granudrum_aor.py:141
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Definition: sparse_permutations.cpp:47
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: XprHelper.h:558
Definition: XprHelper.h:819
Definition: ForwardDeclarations.h:21