11 #ifndef EIGEN_DENSESTORAGEBASE_H
12 #define EIGEN_DENSESTORAGEBASE_H
14 #if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
15 # define EIGEN_INITIALIZE_COEFFS
16 # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
17 #elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
18 # define EIGEN_INITIALIZE_COEFFS
19 # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
21 # undef EIGEN_INITIALIZE_COEFFS
22 # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
31 template <
int MaxSizeAtCompileTime,
int MaxRowsAtCompileTime,
int MaxColsAtCompileTime>
32 struct check_rows_cols_for_overflow {
33 EIGEN_STATIC_ASSERT(MaxRowsAtCompileTime * MaxColsAtCompileTime == MaxSizeAtCompileTime,YOU MADE
A PROGRAMMING MISTAKE)
34 template <
typename Index>
38 template <
int MaxRowsAtCompileTime>
39 struct check_rows_cols_for_overflow<
Dynamic, MaxRowsAtCompileTime,
Dynamic> {
40 template <
typename Index>
42 constexpr
Index MaxIndex = NumTraits<Index>::highest();
43 bool error =
cols > MaxIndex / MaxRowsAtCompileTime;
48 template <
int MaxColsAtCompileTime>
49 struct check_rows_cols_for_overflow<
Dynamic,
Dynamic, MaxColsAtCompileTime> {
50 template <
typename Index>
52 constexpr
Index MaxIndex = NumTraits<Index>::highest();
53 bool error =
rows > MaxIndex / MaxColsAtCompileTime;
60 template <
typename Index>
63 bool error =
cols == 0 ? false : (
rows > MaxIndex /
cols);
68 template <
typename Derived,
69 typename OtherDerived = Derived,
70 bool IsVector =
bool(Derived::IsVectorAtCompileTime) &&
bool(OtherDerived::IsVectorAtCompileTime)>
71 struct conservative_resize_like_impl;
73 template<
typename MatrixTypeA,
typename MatrixTypeB,
bool SwapPo
inters>
struct matrix_swap_impl;
77 #ifdef EIGEN_PARSED_BY_DOXYGEN
89 template<
typename Scalar_,
int Rows_,
int Cols_,
int Options_,
int MaxRows_,
int MaxCols_>
93 template<
typename Scalar_,
int Rows_,
int Cols_,
int Options_,
int MaxRows_,
int MaxCols_>
110 template<
typename Derived>
113 template<typename Derived>
118 enum {
Options = internal::traits<Derived>::Options };
119 typedef typename internal::dense_xpr_base<Derived>::type
Base;
121 typedef typename internal::traits<Derived>::StorageKind
StorageKind;
122 typedef typename internal::traits<Derived>::Scalar
Scalar;
128 using Base::RowsAtCompileTime;
129 using Base::ColsAtCompileTime;
130 using Base::SizeAtCompileTime;
131 using Base::MaxRowsAtCompileTime;
132 using Base::MaxColsAtCompileTime;
133 using Base::MaxSizeAtCompileTime;
134 using Base::IsVectorAtCompileTime;
159 EIGEN_STATIC_ASSERT((MaxRowsAtCompileTime == RowsAtCompileTime || RowsAtCompileTime==
Dynamic), INVALID_MATRIX_TEMPLATE_PARAMETERS)
160 EIGEN_STATIC_ASSERT((MaxColsAtCompileTime == ColsAtCompileTime || ColsAtCompileTime==
Dynamic), INVALID_MATRIX_TEMPLATE_PARAMETERS)
227 template<
int LoadMode>
230 return internal::ploadt<PacketScalar, LoadMode>
237 template<
int LoadMode>
240 return internal::ploadt<PacketScalar, LoadMode>(
m_storage.data() + index);
244 template<
int StoreMode>
247 internal::pstoret<Scalar, PacketScalar, StoreMode>
250 : rowId + colId *
m_storage.rows()), val);
254 template<
int StoreMode>
257 internal::pstoret<Scalar, PacketScalar, StoreMode>(
m_storage.data() + index, val);
289 &&
rows>=0 &&
cols>=0 &&
"Invalid sizes when resizing a matrix or array.");
290 internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime>::run(
rows,
cols);
291 #ifdef EIGEN_INITIALIZE_COEFFS
293 bool size_changed =
size != this->
size();
315 ((SizeAtCompileTime ==
Dynamic && (MaxSizeAtCompileTime ==
Dynamic ||
size <= MaxSizeAtCompileTime)) ||
316 SizeAtCompileTime ==
size) &&
318 #ifdef EIGEN_INITIALIZE_COEFFS
319 bool size_changed =
size != this->
size();
321 if(RowsAtCompileTime == 1)
325 #ifdef EIGEN_INITIALIZE_COEFFS
357 template<
typename OtherDerived>
361 const OtherDerived& other = _other.
derived();
362 internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime>::run(other.rows(), other.cols());
363 const Index othersize = other.rows()*other.cols();
364 if(RowsAtCompileTime == 1)
369 else if(ColsAtCompileTime == 1)
374 else resize(other.rows(), other.cols());
389 internal::conservative_resize_like_impl<Derived>::run(*
this,
rows,
cols);
431 internal::conservative_resize_like_impl<Derived>::run(*
this,
size);
443 template<
typename OtherDerived>
447 internal::conservative_resize_like_impl<Derived,OtherDerived>::run(*
this, other);
460 template<
typename OtherDerived>
465 return Base::lazyAssign(other.
derived());
468 template<
typename OtherDerived>
473 return Base::operator=(func);
486 #ifndef EIGEN_PARSED_BY_DOXYGEN
490 explicit PlainObjectBase(internal::constructor_without_unaligned_array_assert)
499 :
m_storage( std::move(other.m_storage) )
530 template <
typename... ArgTypes>
542 static_cast<void>(
x);
549 const std::initializer_list<std::initializer_list<Scalar>>& list)
551 size_t list_size = 0;
552 if (list.begin() != list.end()) {
553 list_size = list.begin()->size();
557 if (ColsAtCompileTime == 1 && list.size() == 1) {
558 eigen_assert(list_size ==
static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime ==
Dynamic);
559 resize(list_size, ColsAtCompileTime);
560 if (list.begin()->begin() !=
nullptr) {
561 std::copy(list.begin()->begin(), list.begin()->end(),
m_storage.data());
564 eigen_assert(list.size() ==
static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime ==
Dynamic);
565 eigen_assert(list_size ==
static_cast<size_t>(ColsAtCompileTime) || ColsAtCompileTime ==
Dynamic);
566 resize(list.size(), list_size);
569 for (
const std::initializer_list<Scalar>&
row : list) {
582 template<
typename OtherDerived>
592 template<
typename OtherDerived>
601 template<
typename OtherDerived>
607 other.
evalTo(this->derived());
615 template<
typename OtherDerived>
620 Base::operator=(other.
derived());
621 return this->derived();
662 template<
int Outer,
int Inner>
665 template<
int Outer,
int Inner>
668 template<
int Outer,
int Inner>
671 template<
int Outer,
int Inner>
674 template<
int Outer,
int Inner>
677 template<
int Outer,
int Inner>
681 template<
int Outer,
int Inner>
684 template<
int Outer,
int Inner>
687 template<
int Outer,
int Inner>
690 template<
int Outer,
int Inner>
693 template<
int Outer,
int Inner>
696 template<
int Outer,
int Inner>
725 #ifdef EIGEN_PLAINOBJECTBASE_PLUGIN
726 #include EIGEN_PLAINOBJECTBASE_PLUGIN
737 template<
typename OtherDerived>
741 #ifdef EIGEN_NO_AUTOMATIC_RESIZING
744 &&
"Size mismatch. Automatic resizing is disabled because EIGEN_NO_AUTOMATIC_RESIZING is defined");
767 template<
typename OtherDerived>
772 return this->derived();
780 template<
typename OtherDerived>
790 return this->derived();
793 template<
typename T0,
typename T1>
798 internal::is_valid_index_type<T1>::value,
799 T0 AND T1 MUST BE INTEGER TYPES)
803 template<
typename T0,
typename T1>
805 EIGEN_STRONG_INLINE
void _init2(
const T0& val0,
const T1& val1, std::enable_if_t<Base::SizeAtCompileTime==2,T0>* = 0)
812 template<
typename T0,
typename T1>
815 std::enable_if_t< (!internal::is_same<Index,Scalar>::value)
816 && (internal::is_same<T0,Index>::value)
817 && (internal::is_same<T1,Index>::value)
818 && Base::SizeAtCompileTime==2,T1>* = 0)
829 EIGEN_STRONG_INLINE
void _init1(
Index size, std::enable_if_t< (Base::SizeAtCompileTime!=1 || !internal::is_convertible<T, Scalar>::value)
830 && ((!internal::is_same<
typename internal::traits<Derived>::XprKind,
ArrayXpr>::value || Base::SizeAtCompileTime==
Dynamic)),
T>* = 0)
833 const bool is_integer_alike = internal::is_valid_index_type<T>::value;
836 FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
843 EIGEN_STRONG_INLINE
void _init1(
const Scalar& val0, std::enable_if_t<Base::SizeAtCompileTime==1 && internal::is_convertible<T, Scalar>::value,
T>* = 0)
853 std::enable_if_t< (!internal::is_same<Index,Scalar>::value)
854 && (internal::is_same<Index,T>::value)
855 && Base::SizeAtCompileTime==1
856 && internal::is_convertible<T, Scalar>::value,
T*>* = 0)
870 template<
typename T,
typename OtherDerived>
879 EIGEN_STRONG_INLINE
void _init1(
const Derived& other){
884 template<
typename T,
typename OtherDerived>
887 this->derived() = other;
890 template<
typename T,
typename OtherDerived>
895 other.
evalTo(this->derived());
898 template<
typename T,
typename OtherDerived,
int ColsAtCompileTime>
909 std::enable_if_t< Base::SizeAtCompileTime!=
Dynamic
910 && Base::SizeAtCompileTime!=1
911 && internal::is_convertible<T, Scalar>::value
912 && internal::is_same<
typename internal::traits<Derived>::XprKind,
ArrayXpr>::value,
T>* = 0)
921 std::enable_if_t< (!internal::is_same<Index,Scalar>::value)
922 && (internal::is_same<Index,T>::value)
923 && Base::SizeAtCompileTime!=
Dynamic
924 && Base::SizeAtCompileTime!=1
925 && internal::is_convertible<T, Scalar>::value
926 && internal::is_same<
typename internal::traits<Derived>::XprKind,
ArrayXpr>::value,
T*>* = 0)
931 template<
typename MatrixTypeA,
typename MatrixTypeB,
bool SwapPo
inters>
932 friend struct internal::matrix_swap_impl;
936 #ifndef EIGEN_PARSED_BY_DOXYGEN
941 template<
typename OtherDerived>
945 enum { SwapPointers = internal::is_same<Derived, OtherDerived>::value && Base::SizeAtCompileTime==
Dynamic };
946 internal::matrix_swap_impl<Derived, OtherDerived,
bool(SwapPointers)>::run(this->derived(), other.
derived());
952 template<
typename OtherDerived>
954 void swap(DenseBase<OtherDerived>
const & other)
957 enum { IsPlainObjectBase = 1 };
962 template<
typename PlainObjectType,
int MapOptions,
typename Str
ideType>
friend class Eigen::Map;
965 #if EIGEN_MAX_ALIGN_BYTES>0
974 template <
typename Derived,
typename OtherDerived,
bool IsVector>
975 struct conservative_resize_like_impl
977 static constexpr
bool IsRelocatable = std::is_trivially_copyable<typename Derived::Scalar>::value;
984 && (( Derived::IsRowMajor && _this.
cols() ==
cols) ||
985 (!Derived::IsRowMajor && _this.
rows() ==
rows) ))
987 internal::check_rows_cols_for_overflow<Derived::MaxSizeAtCompileTime, Derived::MaxRowsAtCompileTime, Derived::MaxColsAtCompileTime>::run(
rows,
cols);
996 tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
1001 static void run(DenseBase<Derived>& _this,
const DenseBase<OtherDerived>& other)
1003 if (_this.rows() == other.rows() && _this.cols() == other.cols())
return;
1013 if ( IsRelocatable &&
1014 (( Derived::IsRowMajor && _this.cols() == other.cols()) ||
1015 (!Derived::IsRowMajor && _this.rows() == other.rows()) ))
1017 const Index new_rows = other.rows() - _this.rows();
1018 const Index new_cols = other.cols() - _this.cols();
1019 _this.derived().m_storage.conservativeResize(other.size(),other.rows(),other.cols());
1021 _this.bottomRightCorner(new_rows, other.cols()) = other.bottomRows(new_rows);
1022 else if (new_cols>0)
1023 _this.bottomRightCorner(other.rows(), new_cols) = other.rightCols(new_cols);
1031 tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
1032 _this.derived().swap(tmp);
1039 template <
typename Derived,
typename OtherDerived>
1040 struct conservative_resize_like_impl<Derived,OtherDerived,true>
1041 : conservative_resize_like_impl<Derived,OtherDerived,false>
1043 typedef conservative_resize_like_impl<Derived,OtherDerived,false> Base;
1045 using Base::IsRelocatable;
1047 static void run(DenseBase<Derived>& _this,
Index size)
1049 const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 :
size;
1050 const Index new_cols = Derived::RowsAtCompileTime==1 ?
size : 1;
1052 _this.derived().m_storage.conservativeResize(
size,new_rows,new_cols);
1054 Base::run(_this.derived(), new_rows, new_cols);
1057 static void run(DenseBase<Derived>& _this,
const DenseBase<OtherDerived>& other)
1059 if (_this.rows() == other.rows() && _this.cols() == other.cols())
return;
1061 const Index num_new_elements = other.size() - _this.size();
1063 const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : other.rows();
1064 const Index new_cols = Derived::RowsAtCompileTime==1 ? other.cols() : 1;
1066 _this.derived().m_storage.conservativeResize(other.size(),new_rows,new_cols);
1068 Base::run(_this.derived(), new_rows, new_cols);
1070 if (num_new_elements > 0)
1071 _this.tail(num_new_elements) = other.tail(num_new_elements);
1075 template<
typename MatrixTypeA,
typename MatrixTypeB,
bool SwapPo
inters>
1076 struct matrix_swap_impl
1079 static EIGEN_STRONG_INLINE
void run(MatrixTypeA&
a, MatrixTypeB&
b)
1085 template<
typename MatrixTypeA,
typename MatrixTypeB>
1086 struct matrix_swap_impl<MatrixTypeA, MatrixTypeB, true>
1089 static inline void run(MatrixTypeA&
a, MatrixTypeB&
b)
1091 static_cast<typename MatrixTypeA::Base&
>(
a).m_storage.swap(
static_cast<typename MatrixTypeB::Base&
>(
b).m_storage);
RowXpr row(Index i)
This is the const version of row(). */.
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define EIGEN_ALWAYS_INLINE
#define EIGEN_UNUSED_VARIABLE(var)
#define EIGEN_DEVICE_FUNC
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
#define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
#define EIGEN_STATIC_ASSERT(X, MSG)
#define EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE)
#define EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE)
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Base class for all 1D and 2D array, and related expressions.
General-purpose arrays with easy API for coefficient-wise operations.
Base class for all dense matrices, vectors, and arrays.
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
A matrix or vector expression mapping an existing array of data.
Base class for all dense matrices, vectors, and expressions.
The matrix class, also used for vectors and row-vectors.
Dense storage base class for matrices and arrays.
PlainObjectBase & operator=(PlainObjectBase &&other) EIGEN_NOEXCEPT
Eigen::Map< Derived, Unaligned > MapType
Derived & _set(const DenseBase< OtherDerived > &other)
Copies the value of the expression other into *this with automatic resizing.
Eigen::Map< Derived, AlignedMax > AlignedMapType
constexpr Scalar & coeffRef(Index index)
Derived & operator=(const ReturnByValue< OtherDerived > &func)
static StridedConstMapType< Stride< Outer, Inner > >::type Map(const Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
DenseStorage< Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options > m_storage
static StridedMapType< Stride< Outer, Inner > >::type Map(Scalar *data, const Stride< Outer, Inner > &stride)
PlainObjectBase(const ReturnByValue< OtherDerived > &other)
Copy constructor with in-place evaluation.
constexpr const Scalar & coeffRef(Index rowId, Index colId) const
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned(Scalar *data, Index size, const Stride< Outer, Inner > &stride)
internal::packet_traits< Scalar >::type PacketScalar
void _init2(Index rows, Index cols, std::enable_if_t< Base::SizeAtCompileTime!=2, T0 > *=0)
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
void _resize_to_match(const EigenBase< OtherDerived > &other)
constexpr void resize(NoChange_t, Index cols)
constexpr void resize(Index size)
NumTraits< Scalar >::Real RealScalar
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned(const Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
const Eigen::Map< const Derived, AlignedMax > ConstAlignedMapType
void _init1(const EigenBase< OtherDerived > &other)
void _init1(const Scalar &val0, std::enable_if_t< Base::SizeAtCompileTime!=Dynamic &&Base::SizeAtCompileTime!=1 &&internal::is_convertible< T, Scalar >::value &&internal::is_same< typename internal::traits< Derived >::XprKind, ArrayXpr >::value, T > *=0)
void _init2(const T0 &val0, const T1 &val1, std::enable_if_t< Base::SizeAtCompileTime==2, T0 > *=0)
constexpr const Scalar & coeff(Index rowId, Index colId) const
void conservativeResizeLike(const DenseBase< OtherDerived > &other)
void _init1(const RotationBase< OtherDerived, ColsAtCompileTime > &r)
PlainObjectBase(const PlainObjectBase &other)
PlainObjectBase(const Scalar &a0, const Scalar &a1, const Scalar &a2, const Scalar &a3, const ArgTypes &... args)
Construct a row of column vector with fixed size from an arbitrary number of coefficients.
void writePacket(Index index, const PacketScalar &val)
Derived & setRandom(Index size)
static AlignedMapType MapAligned(Scalar *data, Index size)
void _init1(const DenseBase< OtherDerived > &other)
Derived & lazyAssign(const DenseBase< OtherDerived > &other)
void conservativeResize(Index rows, Index cols)
static ConstAlignedMapType MapAligned(const Scalar *data, Index size)
PlainObjectBase(const DenseBase< OtherDerived > &other)
PlainObjectBase(PlainObjectBase &&other) EIGEN_NOEXCEPT
void conservativeResize(Index size)
PacketScalar packet(Index index) const
internal::traits< Derived >::Scalar Scalar
Derived & setOnes(Index size)
constexpr const Scalar & coeffRef(Index index) const
static ConstAlignedMapType MapAligned(const Scalar *data, Index rows, Index cols)
void conservativeResize(Index rows, NoChange_t)
static StridedConstMapType< Stride< Outer, Inner > >::type Map(const Scalar *data, const Stride< Outer, Inner > &stride)
PlainObjectBase(const EigenBase< OtherDerived > &other)
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned(const Scalar *data, Index size, const Stride< Outer, Inner > &stride)
PlainObjectBase(Index size, Index rows, Index cols)
static AlignedMapType MapAligned(Scalar *data, Index rows, Index cols)
constexpr void resize(Index rows, NoChange_t)
PacketScalar packet(Index rowId, Index colId) const
static AlignedMapType MapAligned(Scalar *data)
void _init1(const Scalar *data)
const Base & base() const
void resizeLike(const EigenBase< OtherDerived > &_other)
Derived & setConstant(Index size, const Scalar &val)
void _init1(const ReturnByValue< OtherDerived > &other)
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned(const Scalar *data, const Stride< Outer, Inner > &stride)
static StridedMapType< Stride< Outer, Inner > >::type Map(Scalar *data, Index size, const Stride< Outer, Inner > &stride)
static ConstMapType Map(const Scalar *data)
static MapType Map(Scalar *data, Index size)
void _init1(const Derived &other)
void _init1(const Index &val0, std::enable_if_t<(!internal::is_same< Index, Scalar >::value) &&(internal::is_same< Index, T >::value) &&Base::SizeAtCompileTime!=Dynamic &&Base::SizeAtCompileTime!=1 &&internal::is_convertible< T, Scalar >::value &&internal::is_same< typename internal::traits< Derived >::XprKind, ArrayXpr >::value, T * > *=0)
static MapType Map(Scalar *data)
void _init1(Index size, std::enable_if_t<(Base::SizeAtCompileTime!=1||!internal::is_convertible< T, Scalar >::value) &&((!internal::is_same< typename internal::traits< Derived >::XprKind, ArrayXpr >::value||Base::SizeAtCompileTime==Dynamic)), T > *=0)
void writePacket(Index rowId, Index colId, const PacketScalar &val)
static ConstMapType Map(const Scalar *data, Index size)
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned(Scalar *data, const Stride< Outer, Inner > &stride)
const Scalar * data() const
const Scalar & coeff(Index index) const
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Derived & setZero(Index size)
static MapType Map(Scalar *data, Index rows, Index cols)
EIGEN_STATIC_ASSERT(internal::check_implication(MaxRowsAtCompileTime==1 &&MaxColsAtCompileTime!=1,(int(Options)&RowMajor)==RowMajor), INVALID_MATRIX_TEMPLATE_PARAMETERS) EIGEN_STATIC_ASSERT(internal
static StridedMapType< Stride< Outer, Inner > >::type Map(Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
void _init1(const Scalar &val0, std::enable_if_t< Base::SizeAtCompileTime==1 &&internal::is_convertible< T, Scalar >::value, T > *=0)
Derived & operator=(const EigenBase< OtherDerived > &other)
Copies the generic expression other into *this.
constexpr PlainObjectBase(const std::initializer_list< std::initializer_list< Scalar >> &list)
Constructs a Matrix or Array and initializes it by elements given by an initializer list of initializ...
static ConstMapType Map(const Scalar *data, Index rows, Index cols)
void _init1(const Index &val0, std::enable_if_t<(!internal::is_same< Index, Scalar >::value) &&(internal::is_same< Index, T >::value) &&Base::SizeAtCompileTime==1 &&internal::is_convertible< T, Scalar >::value, T * > *=0)
static ConstAlignedMapType MapAligned(const Scalar *data)
constexpr void resize(Index rows, Index cols)
static StridedConstMapType< Stride< Outer, Inner > >::type Map(const Scalar *data, Index size, const Stride< Outer, Inner > &stride)
constexpr Scalar & coeffRef(Index rowId, Index colId)
internal::traits< Derived >::StorageKind StorageKind
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned(Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
Derived & _set_noalias(const DenseBase< OtherDerived > &other)
internal::dense_xpr_base< Derived >::type Base
void _init2(const Index &val0, const Index &val1, std::enable_if_t<(!internal::is_same< Index, Scalar >::value) &&(internal::is_same< T0, Index >::value) &&(internal::is_same< T1, Index >::value) &&Base::SizeAtCompileTime==2, T1 > *=0)
const Eigen::Map< const Derived, Unaligned > ConstMapType
Derived & operator=(const PlainObjectBase &other)
void conservativeResize(NoChange_t, Index cols)
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
void evalTo(Dest &dst) const
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Common base class for compact rotation representations.
Holds strides information for Map.
const unsigned int RowMajorBit
constexpr bool check_implication(bool a, bool b)
void call_assignment(Dst &dst, const Src &src)
EIGEN_CONSTEXPR void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
void throw_std_bad_alloc()
void swap(scoped_array< T > &a, scoped_array< T > &b)
EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Eigen::Map< Derived, AlignedMax, StrideType > type
Eigen::Map< const Derived, AlignedMax, StrideType > type
Eigen::Map< const Derived, Unaligned, StrideType > type
Eigen::Map< Derived, Unaligned, StrideType > type