10#ifndef EIGEN_STLITERATORS_H
11#define EIGEN_STLITERATORS_H
17template<
typename IteratorType>
20template<
typename Derived>
92 Derived&
derived() {
return static_cast<Derived&
>(*this); }
93 const Derived&
derived()
const {
return static_cast<const Derived&
>(*this); }
99template<
typename Derived>
152 return other.m_index -
m_index;
171 Derived&
derived() {
return static_cast<Derived&
>(*this); }
172 const Derived&
derived()
const {
return static_cast<const Derived&
>(*this); }
178template<
typename XprType>
259template<
typename _XprType>
267template<
typename XprType>
297 using Base::operator=;
304template<
typename _XprType, DirectionType Direction>
312template<
typename XprType, DirectionType Direction>
332 class subvector_stl_iterator_ptr
335 subvector_stl_iterator_ptr(
const reference &subvector) : m_subvector(subvector) {}
352template<
typename _XprType, DirectionType Direction>
360template<
typename XprType, DirectionType Direction>
380 class subvector_stl_reverse_iterator_ptr
383 subvector_stl_reverse_iterator_ptr(
const reference &subvector) : m_subvector(subvector) {}
390 typedef subvector_stl_reverse_iterator_ptr
pointer;
407template<
typename Derived>
415template<
typename Derived>
425template<
typename Derived>
436template<
typename Derived>
444template<
typename Derived>
454template<
typename Derived>
#define eigen_assert(x)
Definition: Macros.h:1047
#define EIGEN_NO_THROW
Definition: Macros.h:1430
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition: StaticAssert.h:142
iterator begin()
returns an iterator to the first element of the 1D vector or array \only_for_vectors
Definition: StlIterators.h:408
iterator end()
returns an iterator to the element following the last element of the 1D vector or array \only_for_vec...
Definition: StlIterators.h:437
const_iterator cbegin() const
returns a read-only const_iterator to the first element of the 1D vector or array \only_for_vectors
Definition: StlIterators.h:426
const_iterator cend() const
returns a read-only const_iterator to the element following the last element of the 1D vector or arra...
Definition: StlIterators.h:455
Definition: StlIterators.h:269
generic_randaccess_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:295
Index m_index
Definition: StlIterators.h:96
XprType * mp_xpr
Definition: StlIterators.h:95
pointer operator->() const
Definition: StlIterators.h:301
internal::conditional< bool(is_lvalue), value_type &, read_only_ref_t >::type reference
Definition: StlIterators.h:292
generic_randaccess_stl_iterator(const typename Base::non_const_iterator &other)
Definition: StlIterators.h:296
indexed_based_stl_iterator_base< generic_randaccess_stl_iterator > Base
Definition: StlIterators.h:280
internal::conditional< bool(is_lvalue), value_type *, constvalue_type * >::type pointer
Definition: StlIterators.h:291
reference operator*() const
Definition: StlIterators.h:299
const value_type read_only_ref_t
Definition: StlIterators.h:287
XprType::Scalar value_type
Definition: StlIterators.h:271
reference operator[](Index i) const
Definition: StlIterators.h:300
generic_randaccess_stl_iterator()
Definition: StlIterators.h:294
Definition: StlIterators.h:22
const Derived & derived() const
Definition: StlIterators.h:93
Index difference_type
Definition: StlIterators.h:33
Derived operator--(int)
Definition: StlIterators.h:54
Index m_index
Definition: StlIterators.h:96
XprType * mp_xpr
Definition: StlIterators.h:95
Derived & operator++()
Definition: StlIterators.h:50
indexed_based_stl_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:27
Derived & operator+=(Index b)
Definition: StlIterators.h:61
friend Derived operator+(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:56
indexed_based_stl_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:26
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:86
bool operator==(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:76
bool operator!=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:77
traits::XprType XprType
Definition: StlIterators.h:25
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:24
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:84
indexed_based_stl_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:43
bool operator>(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:80
bool operator<=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:79
difference_type operator-(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:64
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:34
friend Derived operator+(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:58
Derived operator++(int)
Definition: StlIterators.h:53
Derived & operator-=(Index b)
Definition: StlIterators.h:62
friend Derived operator-(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:57
indexed_based_stl_iterator_base(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:39
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:83
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:28
bool operator>=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:81
Derived & derived()
Definition: StlIterators.h:92
friend Derived operator-(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:59
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:88
Derived & operator--()
Definition: StlIterators.h:51
indexed_based_stl_iterator_base(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:37
bool operator<(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:78
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:70
Definition: StlIterators.h:101
Derived & operator--()
Definition: StlIterators.h:130
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:165
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:162
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:113
difference_type operator-(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:143
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:167
traits::XprType XprType
Definition: StlIterators.h:104
bool operator>(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:159
friend Derived operator+(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:135
bool operator<=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:158
indexed_based_stl_reverse_iterator_base(const non_const_iterator &other)
Definition: StlIterators.h:118
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:107
Derived & operator+=(Index b)
Definition: StlIterators.h:140
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:149
bool operator==(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:155
Derived operator--(int)
Definition: StlIterators.h:133
friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:138
bool operator!=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:156
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:103
bool operator>=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:160
XprType * mp_xpr
Definition: StlIterators.h:174
indexed_based_stl_reverse_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:106
bool operator<(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:157
friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:137
friend Derived operator-(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:136
const Derived & derived() const
Definition: StlIterators.h:172
Derived & derived()
Definition: StlIterators.h:171
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:163
indexed_based_stl_reverse_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:105
Derived & operator-=(Index b)
Definition: StlIterators.h:141
indexed_based_stl_reverse_iterator_base(XprType &xpr, Index index)
Definition: StlIterators.h:116
Index m_index
Definition: StlIterators.h:175
indexed_based_stl_reverse_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:122
Derived operator++(int)
Definition: StlIterators.h:132
Derived & operator++()
Definition: StlIterators.h:129
Index difference_type
Definition: StlIterators.h:112
Definition: StlIterators.h:180
bool operator<=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:242
pointer_based_stl_iterator operator++(int)
Definition: StlIterators.h:220
bool operator>=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:244
pointer m_ptr
Definition: StlIterators.h:255
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:246
reference operator[](Index i) const
Definition: StlIterators.h:214
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:191
Index difference_type
Definition: StlIterators.h:189
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:247
pointer_based_stl_iterator operator--(int)
Definition: StlIterators.h:221
XprType::Scalar value_type
Definition: StlIterators.h:190
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:251
difference_type operator-(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:231
friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:223
friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:224
pointer_based_stl_iterator(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:202
bool operator!=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:240
pointer_based_stl_iterator & operator++()
Definition: StlIterators.h:217
pointer_based_stl_iterator & operator--()
Definition: StlIterators.h:218
pointer_based_stl_iterator & operator+=(Index b)
Definition: StlIterators.h:228
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:235
pointer operator->() const
Definition: StlIterators.h:215
pointer_based_stl_iterator(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:197
friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:225
reference operator*() const
Definition: StlIterators.h:213
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:249
internal::variable_if_dynamic< Index, XprType::InnerStrideAtCompileTime > m_incr
Definition: StlIterators.h:256
pointer_based_stl_iterator & operator-=(Index b)
Definition: StlIterators.h:229
friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:226
bool operator==(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:239
bool operator>(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:243
bool operator<(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:241
pointer_based_stl_iterator & operator=(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:206
Definition: StlIterators.h:314
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:328
Index m_index
Definition: StlIterators.h:96
subvector_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:345
indexed_based_stl_iterator_base< subvector_stl_iterator > Base
Definition: StlIterators.h:319
subvector_stl_iterator_ptr pointer
Definition: StlIterators.h:342
reference operator[](Index i) const
Definition: StlIterators.h:348
internal::conditional< Direction==Vertical, typenameXprType::ConstColXpr, typenameXprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:324
pointer operator->() const
Definition: StlIterators.h:349
internal::conditional< Direction==Vertical, typenameXprType::ColXpr, typenameXprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:323
reference::PlainObject value_type
Definition: StlIterators.h:329
subvector_stl_iterator()
Definition: StlIterators.h:344
reference operator*() const
Definition: StlIterators.h:347
Definition: StlIterators.h:362
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:376
reference::PlainObject value_type
Definition: StlIterators.h:377
indexed_based_stl_reverse_iterator_base< subvector_stl_reverse_iterator > Base
Definition: StlIterators.h:367
subvector_stl_reverse_iterator()
Definition: StlIterators.h:392
reference operator*() const
Definition: StlIterators.h:395
internal::conditional< Direction==Vertical, typenameXprType::ConstColXpr, typenameXprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:372
reference operator[](Index i) const
Definition: StlIterators.h:396
internal::conditional< Direction==Vertical, typenameXprType::ColXpr, typenameXprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:371
subvector_stl_reverse_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:393
pointer operator->() const
Definition: StlIterators.h:397
subvector_stl_reverse_iterator_ptr pointer
Definition: StlIterators.h:390
Index m_index
Definition: StlIterators.h:175
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T v) const
Definition: XprHelper.h:139
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR T value()
Definition: XprHelper.h:135
type
Definition: core.h:575
const unsigned int DirectAccessBit
Means that the underlying array of coefficients can be directly accessed as a plain strided array.
Definition: Constants.h:155
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
Namespace containing all symbols from the Eigen library.
Definition: MatrixExponential.h:16
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Definition: Eigen_Colamd.h:50
Definition: ForwardDeclarations.h:26
generic_randaccess_stl_iterator< typename internal::remove_const< XprType >::type > non_const_iterator
Definition: StlIterators.h:263
generic_randaccess_stl_iterator< typename internal::add_const< XprType >::type > const_iterator
Definition: StlIterators.h:264
_XprType XprType
Definition: StlIterators.h:262
_XprType XprType
Definition: StlIterators.h:307
subvector_stl_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:308
subvector_stl_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:309
subvector_stl_reverse_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:356
subvector_stl_reverse_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:357
_XprType XprType
Definition: StlIterators.h:355
Definition: StlIterators.h:18
Definition: XprHelper.h:660
Definition: ForwardDeclarations.h:17