StlIterators.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2018 Gael Guennebaud <gael.guennebaud@inria.fr>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #ifndef EIGEN_STLITERATORS_H
11 #define EIGEN_STLITERATORS_H
12 
13 namespace Eigen {
14 
15 namespace internal {
16 
17 template<typename IteratorType>
19 
20 template<typename Derived>
22 {
23 protected:
25  typedef typename traits::XprType XprType;
29  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
31  friend class indexed_based_stl_iterator_base<typename traits::non_const_iterator>;
32 public:
34  typedef std::random_access_iterator_tag iterator_category;
35 
38 
40  : mp_xpr(other.mp_xpr), m_index(other.m_index)
41  {}
42 
44  {
45  mp_xpr = other.mp_xpr;
46  m_index = other.m_index;
47  return *this;
48  }
49 
50  Derived& operator++() { ++m_index; return derived(); }
51  Derived& operator--() { --m_index; return derived(); }
52 
53  Derived operator++(int) { Derived prev(derived()); operator++(); return prev;}
54  Derived operator--(int) { Derived prev(derived()); operator--(); return prev;}
55 
56  friend Derived operator+(const indexed_based_stl_iterator_base& a, Index b) { Derived ret(a.derived()); ret += b; return ret; }
57  friend Derived operator-(const indexed_based_stl_iterator_base& a, Index b) { Derived ret(a.derived()); ret -= b; return ret; }
58  friend Derived operator+(Index a, const indexed_based_stl_iterator_base& b) { Derived ret(b.derived()); ret += a; return ret; }
59  friend Derived operator-(Index a, const indexed_based_stl_iterator_base& b) { Derived ret(b.derived()); ret -= a; return ret; }
60 
61  Derived& operator+=(Index b) { m_index += b; return derived(); }
62  Derived& operator-=(Index b) { m_index -= b; return derived(); }
63 
65  {
66  eigen_assert(mp_xpr == other.mp_xpr);
67  return m_index - other.m_index;
68  }
69 
71  {
72  eigen_assert(mp_xpr == other.mp_xpr);
73  return m_index - other.m_index;
74  }
75 
76  bool operator==(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
77  bool operator!=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
78  bool operator< (const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
79  bool operator<=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
80  bool operator> (const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
81  bool operator>=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
82 
83  bool operator==(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
84  bool operator!=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
85  bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
86  bool operator<=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
87  bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
88  bool operator>=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
89 
90 protected:
91 
92  Derived& derived() { return static_cast<Derived&>(*this); }
93  const Derived& derived() const { return static_cast<const Derived&>(*this); }
94 
97 };
98 
99 template<typename Derived>
101 {
102 protected:
104  typedef typename traits::XprType XprType;
108  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
110  friend class indexed_based_stl_reverse_iterator_base<typename traits::non_const_iterator>;
111 public:
113  typedef std::random_access_iterator_tag iterator_category;
114 
117 
120  {}
121 
123  {
124  mp_xpr = other.mp_xpr;
125  m_index = other.m_index;
126  return *this;
127  }
128 
129  Derived& operator++() { --m_index; return derived(); }
130  Derived& operator--() { ++m_index; return derived(); }
131 
132  Derived operator++(int) { Derived prev(derived()); operator++(); return prev;}
133  Derived operator--(int) { Derived prev(derived()); operator--(); return prev;}
134 
135  friend Derived operator+(const indexed_based_stl_reverse_iterator_base& a, Index b) { Derived ret(a.derived()); ret += b; return ret; }
136  friend Derived operator-(const indexed_based_stl_reverse_iterator_base& a, Index b) { Derived ret(a.derived()); ret -= b; return ret; }
137  friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base& b) { Derived ret(b.derived()); ret += a; return ret; }
138  friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base& b) { Derived ret(b.derived()); ret -= a; return ret; }
139 
140  Derived& operator+=(Index b) { m_index -= b; return derived(); }
141  Derived& operator-=(Index b) { m_index += b; return derived(); }
142 
144  {
145  eigen_assert(mp_xpr == other.mp_xpr);
146  return other.m_index - m_index;
147  }
148 
150  {
151  eigen_assert(mp_xpr == other.mp_xpr);
152  return other.m_index - m_index;
153  }
154 
155  bool operator==(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
156  bool operator!=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
157  bool operator< (const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
158  bool operator<=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
159  bool operator> (const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
160  bool operator>=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
161 
162  bool operator==(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
163  bool operator!=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
164  bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
165  bool operator<=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
166  bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
167  bool operator>=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
168 
169 protected:
170 
171  Derived& derived() { return static_cast<Derived&>(*this); }
172  const Derived& derived() const { return static_cast<const Derived&>(*this); }
173 
176 };
177 
178 template<typename XprType>
180 {
185  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
186  friend class pointer_based_stl_iterator<typename internal::add_const<XprType>::type>;
187  friend class pointer_based_stl_iterator<typename internal::remove_const<XprType>::type>;
188 public:
190  typedef typename XprType::Scalar value_type;
191  typedef std::random_access_iterator_tag iterator_category;
192  typedef typename internal::conditional<bool(is_lvalue), value_type*, const value_type*>::type pointer;
193  typedef typename internal::conditional<bool(is_lvalue), value_type&, const value_type&>::type reference;
194 
195 
198  {
199  m_ptr = xpr.data() + index * m_incr.value();
200  }
201 
203  : m_ptr(other.m_ptr), m_incr(other.m_incr)
204  {}
205 
207  {
208  m_ptr = other.m_ptr;
209  m_incr.setValue(other.m_incr);
210  return *this;
211  }
212 
213  reference operator*() const { return *m_ptr; }
214  reference operator[](Index i) const { return *(m_ptr+i*m_incr.value()); }
215  pointer operator->() const { return m_ptr; }
216 
219 
222 
227 
230 
232  return (m_ptr - other.m_ptr)/m_incr.value();
233  }
234 
236  return (m_ptr - other.m_ptr)/m_incr.value();
237  }
238 
239  bool operator==(const pointer_based_stl_iterator& other) const { return m_ptr == other.m_ptr; }
240  bool operator!=(const pointer_based_stl_iterator& other) const { return m_ptr != other.m_ptr; }
241  bool operator< (const pointer_based_stl_iterator& other) const { return m_ptr < other.m_ptr; }
242  bool operator<=(const pointer_based_stl_iterator& other) const { return m_ptr <= other.m_ptr; }
243  bool operator> (const pointer_based_stl_iterator& other) const { return m_ptr > other.m_ptr; }
244  bool operator>=(const pointer_based_stl_iterator& other) const { return m_ptr >= other.m_ptr; }
245 
246  bool operator==(const other_iterator& other) const { return m_ptr == other.m_ptr; }
247  bool operator!=(const other_iterator& other) const { return m_ptr != other.m_ptr; }
248  bool operator< (const other_iterator& other) const { return m_ptr < other.m_ptr; }
249  bool operator<=(const other_iterator& other) const { return m_ptr <= other.m_ptr; }
250  bool operator> (const other_iterator& other) const { return m_ptr > other.m_ptr; }
251  bool operator>=(const other_iterator& other) const { return m_ptr >= other.m_ptr; }
252 
253 protected:
254 
257 };
258 
259 template<typename _XprType>
261 {
262  typedef _XprType XprType;
265 };
266 
267 template<typename XprType>
268 class generic_randaccess_stl_iterator : public indexed_based_stl_iterator_base<generic_randaccess_stl_iterator<XprType> >
269 {
270 public:
271  typedef typename XprType::Scalar value_type;
272 
273 protected:
274 
275  enum {
278  };
279 
281  using Base::m_index;
282  using Base::mp_xpr;
283 
284  // TODO currently const Transpose/Reshape expressions never returns const references,
285  // so lets return by value too.
286  //typedef typename internal::conditional<bool(has_direct_access), const value_type&, const value_type>::type read_only_ref_t;
288 
289 public:
290 
293 
295  generic_randaccess_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
297  using Base::operator=;
298 
299  reference operator*() const { return (*mp_xpr)(m_index); }
300  reference operator[](Index i) const { return (*mp_xpr)(m_index+i); }
301  pointer operator->() const { return &((*mp_xpr)(m_index)); }
302 };
303 
304 template<typename _XprType, DirectionType Direction>
306 {
307  typedef _XprType XprType;
310 };
311 
312 template<typename XprType, DirectionType Direction>
313 class subvector_stl_iterator : public indexed_based_stl_iterator_base<subvector_stl_iterator<XprType,Direction> >
314 {
315 protected:
316 
318 
320  using Base::m_index;
321  using Base::mp_xpr;
322 
325 
326 
327 public:
329  typedef typename reference::PlainObject value_type;
330 
331 private:
333  {
334  public:
335  subvector_stl_iterator_ptr(const reference &subvector) : m_subvector(subvector) {}
337  private:
339  };
340 public:
341 
343 
345  subvector_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
346 
347  reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
348  reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
349  pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
350 };
351 
352 template<typename _XprType, DirectionType Direction>
354 {
355  typedef _XprType XprType;
358 };
359 
360 template<typename XprType, DirectionType Direction>
361 class subvector_stl_reverse_iterator : public indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator<XprType,Direction> >
362 {
363 protected:
364 
366 
368  using Base::m_index;
369  using Base::mp_xpr;
370 
373 
374 
375 public:
377  typedef typename reference::PlainObject value_type;
378 
379 private:
381  {
382  public:
383  subvector_stl_reverse_iterator_ptr(const reference &subvector) : m_subvector(subvector) {}
385  private:
387  };
388 public:
389 
391 
393  subvector_stl_reverse_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
394 
395  reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
396  reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
397  pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
398 };
399 
400 } // namespace internal
401 
402 
407 template<typename Derived>
409 {
411  return iterator(derived(), 0);
412 }
413 
415 template<typename Derived>
417 {
418  return cbegin();
419 }
420 
425 template<typename Derived>
427 {
429  return const_iterator(derived(), 0);
430 }
431 
436 template<typename Derived>
438 {
440  return iterator(derived(), size());
441 }
442 
444 template<typename Derived>
446 {
447  return cend();
448 }
449 
454 template<typename Derived>
456 {
458  return const_iterator(derived(), size());
459 }
460 
461 } // namespace Eigen
462 
463 #endif // EIGEN_STLITERATORS_H
Eigen::internal::indexed_based_stl_reverse_iterator_base< subvector_stl_reverse_iterator< XprType, Direction > >::difference_type
Index difference_type
Definition: StlIterators.h:112
Eigen::internal::subvector_stl_iterator::operator*
reference operator*() const
Definition: StlIterators.h:347
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator=
indexed_based_stl_reverse_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:122
Eigen::internal::pointer_based_stl_iterator::operator+
friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:225
Eigen::internal::indexed_based_stl_reverse_iterator_base::indexed_based_stl_reverse_iterator_base
indexed_based_stl_reverse_iterator_base(XprType &xpr, Index index)
Definition: StlIterators.h:116
Eigen::internal::indexed_based_stl_iterator_base::operator-
difference_type operator-(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:64
Eigen::internal::variable_if_dynamic< Index, XprType::InnerStrideAtCompileTime >
Eigen::internal::subvector_stl_iterator::SubVectorType
internal::conditional< Direction==Vertical, typename XprType::ColXpr, typename XprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:323
Eigen::internal::indexed_based_stl_iterator_base::operator!=
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:84
Eigen::internal::subvector_stl_reverse_iterator::reference
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:376
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator_ptr::subvector_stl_reverse_iterator_ptr
subvector_stl_reverse_iterator_ptr(const reference &subvector)
Definition: StlIterators.h:383
Eigen
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
Eigen::internal::pointer_based_stl_iterator::operator[]
reference operator[](Index i) const
Definition: StlIterators.h:214
Eigen::internal::indexed_based_stl_iterator_base::const_iterator
indexed_based_stl_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:27
Eigen::internal::generic_randaccess_stl_iterator::operator*
reference operator*() const
Definition: StlIterators.h:299
Eigen::internal::indexed_based_stl_iterator_base::mp_xpr
XprType * mp_xpr
Definition: StlIterators.h:95
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_reverse_iterator< _XprType, Direction > >::XprType
_XprType XprType
Definition: StlIterators.h:355
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator
subvector_stl_reverse_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:393
Eigen::internal::pointer_based_stl_iterator::operator==
bool operator==(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:239
Eigen::internal::indexed_based_stl_iterator_base< subvector_stl_iterator< XprType, Direction > >::iterator_category
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:34
Eigen::internal::pointer_based_stl_iterator::operator!=
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:247
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator_ptr
Definition: StlIterators.h:380
Eigen::internal::indexed_based_stl_iterator_base::other_iterator
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:28
Eigen::internal::pointer_based_stl_iterator::operator++
pointer_based_stl_iterator & operator++()
Definition: StlIterators.h:217
Eigen::internal::indexed_based_stl_iterator_base::operator<=
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:86
Eigen::internal::indexed_based_stl_reverse_iterator_base::derived
Derived & derived()
Definition: StlIterators.h:171
Eigen::internal::pointer_based_stl_iterator::m_incr
internal::variable_if_dynamic< Index, XprType::InnerStrideAtCompileTime > m_incr
Definition: StlIterators.h:256
Eigen::internal::subvector_stl_reverse_iterator::ConstSubVectorType
internal::conditional< Direction==Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:372
Eigen::CwiseBinaryOp
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:77
Eigen::internal::indexed_based_stl_iterator_base::operator--
Derived operator--(int)
Definition: StlIterators.h:54
Eigen::internal::indexed_based_stl_reverse_iterator_base::m_index
Index m_index
Definition: StlIterators.h:175
b
Scalar * b
Definition: benchVecAdd.cpp:17
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator_ptr
Definition: StlIterators.h:332
Eigen::internal::pointer_based_stl_iterator::operator-
friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:224
Eigen::internal::indexed_based_stl_iterator_base::operator+
friend Derived operator+(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:56
eigen_assert
#define eigen_assert(x)
Definition: Macros.h:1037
Eigen::internal::generic_randaccess_stl_iterator::operator[]
reference operator[](Index i) const
Definition: StlIterators.h:300
Eigen::internal::is_lvalue
Definition: XprHelper.h:659
Eigen::internal::pointer_based_stl_iterator::operator>
bool operator>(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:243
Eigen::internal::indexed_based_stl_iterator_base::operator>
bool operator>(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:80
Eigen::internal::indexed_based_stl_iterator_base::non_const_iterator
indexed_based_stl_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:26
Eigen::internal::subvector_stl_iterator::value_type
reference::PlainObject value_type
Definition: StlIterators.h:329
Eigen::internal::indexed_based_stl_iterator_base
Definition: StlIterators.h:21
ret
DenseIndex ret
Definition: level1_cplx_impl.h:44
Eigen::internal::indexed_based_stl_iterator_base::XprType
traits::XprType XprType
Definition: StlIterators.h:25
Eigen::internal::indexed_based_stl_iterator_base::operator++
Derived operator++(int)
Definition: StlIterators.h:53
Eigen::internal::pointer_based_stl_iterator::operator--
pointer_based_stl_iterator & operator--()
Definition: StlIterators.h:218
Eigen::internal::indexed_based_stl_iterator_base::operator==
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:83
type
Definition: pytypes.h:1525
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator!=
bool operator!=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:156
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_iterator< _XprType, Direction > >::XprType
_XprType XprType
Definition: StlIterators.h:307
EIGEN_STATIC_ASSERT_VECTOR_ONLY
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition: StaticAssert.h:142
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator_ptr::m_subvector
reference m_subvector
Definition: StlIterators.h:386
Eigen::internal::indexed_based_stl_iterator_base::operator==
bool operator==(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:76
Eigen::internal::indexed_based_stl_iterator_base::operator!=
bool operator!=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:77
Eigen::internal::indexed_based_stl_iterator_traits< generic_randaccess_stl_iterator< _XprType > >::const_iterator
generic_randaccess_stl_iterator< typename internal::add_const< XprType >::type > const_iterator
Definition: StlIterators.h:264
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator_ptr::operator->
reference * operator->()
Definition: StlIterators.h:384
Eigen::internal::indexed_based_stl_iterator_base::m_index
Index m_index
Definition: StlIterators.h:96
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator<
bool operator<(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:157
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator>=
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:167
Eigen::internal::indexed_based_stl_iterator_traits
Definition: StlIterators.h:18
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator++
Derived & operator++()
Definition: StlIterators.h:129
Eigen::internal::generic_randaccess_stl_iterator::operator->
pointer operator->() const
Definition: StlIterators.h:301
Eigen::DirectAccessBit
const unsigned int DirectAccessBit
Definition: Constants.h:155
Eigen::internal::pointer_based_stl_iterator::operator<=
bool operator<=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:242
Eigen::internal::pointer_based_stl_iterator::difference_type
Index difference_type
Definition: StlIterators.h:189
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator-=
Derived & operator-=(Index b)
Definition: StlIterators.h:141
Eigen::internal::pointer_based_stl_iterator::operator+
friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:223
size
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator_ptr::m_subvector
reference m_subvector
Definition: StlIterators.h:338
Eigen::internal::indexed_based_stl_reverse_iterator_base< subvector_stl_reverse_iterator< XprType, Direction > >::iterator_category
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:113
Eigen::internal::indexed_based_stl_iterator_base::operator-=
Derived & operator-=(Index b)
Definition: StlIterators.h:62
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator--
Derived & operator--()
Definition: StlIterators.h:130
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator_ptr::operator->
reference * operator->()
Definition: StlIterators.h:336
Eigen::internal::generic_randaccess_stl_iterator::generic_randaccess_stl_iterator
generic_randaccess_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:295
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator-
difference_type operator-(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:143
Eigen::internal::indexed_based_stl_iterator_base::operator-
friend Derived operator-(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:59
Eigen::internal::indexed_based_stl_iterator_traits< generic_randaccess_stl_iterator< _XprType > >::XprType
_XprType XprType
Definition: StlIterators.h:262
Eigen::internal::pointer_based_stl_iterator::pointer_based_stl_iterator
pointer_based_stl_iterator(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:202
Eigen::internal::generic_randaccess_stl_iterator::Base
indexed_based_stl_iterator_base< generic_randaccess_stl_iterator > Base
Definition: StlIterators.h:280
Eigen::internal::subvector_stl_iterator::Base
indexed_based_stl_iterator_base< subvector_stl_iterator > Base
Definition: StlIterators.h:319
Eigen::internal::true_type
Definition: Meta.h:96
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator-
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:149
Eigen::internal::indexed_based_stl_iterator_base::operator=
indexed_based_stl_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:43
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator++
Derived operator++(int)
Definition: StlIterators.h:132
Eigen::internal::subvector_stl_iterator::operator->
pointer operator->() const
Definition: StlIterators.h:349
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator>=
bool operator>=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:160
Eigen::internal::pointer_based_stl_iterator::operator<=
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:249
Eigen::internal::pointer_based_stl_iterator
Definition: StlIterators.h:179
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator+=
Derived & operator+=(Index b)
Definition: StlIterators.h:140
Eigen::internal::subvector_stl_reverse_iterator::operator->
pointer operator->() const
Definition: StlIterators.h:397
Eigen::internal::pointer_based_stl_iterator::operator!=
bool operator!=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:240
Eigen::internal::variable_if_dynamic::value
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR T value()
Definition: XprHelper.h:135
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator==
bool operator==(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:155
Eigen::internal::pointer_based_stl_iterator::operator->
pointer operator->() const
Definition: StlIterators.h:215
Eigen::internal::indexed_based_stl_reverse_iterator_base::other_iterator
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:107
Eigen::internal::indexed_based_stl_reverse_iterator_base::indexed_based_stl_reverse_iterator_base
indexed_based_stl_reverse_iterator_base(const non_const_iterator &other)
Definition: StlIterators.h:118
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator+
friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:137
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_iterator< _XprType, Direction > >::const_iterator
subvector_stl_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:309
Eigen::internal::indexed_based_stl_iterator_base::operator+
friend Derived operator+(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:58
Eigen::internal::indexed_based_stl_iterator_base::derived
const Derived & derived() const
Definition: StlIterators.h:93
Eigen::internal::generic_randaccess_stl_iterator
Definition: StlIterators.h:268
Eigen::internal::add_const
Definition: Meta.h:208
Eigen::internal::indexed_based_stl_iterator_base::derived
Derived & derived()
Definition: StlIterators.h:92
Eigen::internal::indexed_based_stl_reverse_iterator_base
Definition: StlIterators.h:100
Eigen::internal::pointer_based_stl_iterator::operator=
pointer_based_stl_iterator & operator=(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:206
Eigen::internal::generic_randaccess_stl_iterator::value_type
XprType::Scalar value_type
Definition: StlIterators.h:271
Eigen::internal::pointer_based_stl_iterator::operator-
friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:226
Eigen::internal::subvector_stl_reverse_iterator::operator*
reference operator*() const
Definition: StlIterators.h:395
Eigen::internal::subvector_stl_iterator
Definition: StlIterators.h:313
Eigen::internal::indexed_based_stl_reverse_iterator_base::mp_xpr
XprType * mp_xpr
Definition: StlIterators.h:174
Eigen::internal::subvector_stl_reverse_iterator::SubVectorType
internal::conditional< Direction==Vertical, typename XprType::ColXpr, typename XprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:371
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator_ptr::subvector_stl_iterator_ptr
subvector_stl_iterator_ptr(const reference &subvector)
Definition: StlIterators.h:335
Eigen::internal::generic_randaccess_stl_iterator::generic_randaccess_stl_iterator
generic_randaccess_stl_iterator()
Definition: StlIterators.h:294
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator!=
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:163
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_reverse_iterator< _XprType, Direction > >::non_const_iterator
subvector_stl_reverse_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:356
Eigen::internal::pointer_based_stl_iterator::m_ptr
pointer m_ptr
Definition: StlIterators.h:255
XprType
CwiseBinaryOp< internal::scalar_sum_op< double, double >, const CpyMatrixXd, const CpyMatrixXd > XprType
Definition: nestbyvalue.cpp:15
Eigen::internal::indexed_based_stl_iterator_base::operator--
Derived & operator--()
Definition: StlIterators.h:51
Eigen::internal::indexed_based_stl_iterator_base< subvector_stl_iterator< XprType, Direction > >::difference_type
Index difference_type
Definition: StlIterators.h:33
Eigen::internal::indexed_based_stl_iterator_traits< generic_randaccess_stl_iterator< _XprType > >::non_const_iterator
generic_randaccess_stl_iterator< typename internal::remove_const< XprType >::type > non_const_iterator
Definition: StlIterators.h:263
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator+
friend Derived operator+(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:135
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator-
friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:138
Eigen::internal::subvector_stl_iterator::ConstSubVectorType
internal::conditional< Direction==Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:324
Eigen::internal::pointer_based_stl_iterator::operator>=
bool operator>=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:244
Eigen::internal::pointer_based_stl_iterator::operator<
bool operator<(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:241
a
ArrayXXi a
Definition: Array_initializer_list_23_cxx11.cpp:1
Eigen::internal::subvector_stl_reverse_iterator::value_type
reference::PlainObject value_type
Definition: StlIterators.h:377
Eigen::internal::indexed_based_stl_iterator_base::operator<
bool operator<(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:78
Eigen::internal::pointer_based_stl_iterator::pointer_based_stl_iterator
pointer_based_stl_iterator(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:197
Eigen::internal::pointer_based_stl_iterator::value_type
XprType::Scalar value_type
Definition: StlIterators.h:190
Eigen::internal::traits
Definition: ForwardDeclarations.h:17
Eigen::DenseBase::end
iterator end()
Definition: StlIterators.h:437
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator--
Derived operator--(int)
Definition: StlIterators.h:133
Eigen::DenseBase::begin
iterator begin()
Definition: StlIterators.h:408
Eigen::internal::subvector_stl_reverse_iterator::operator[]
reference operator[](Index i) const
Definition: StlIterators.h:396
Eigen::internal::subvector_stl_reverse_iterator::pointer
subvector_stl_reverse_iterator_ptr pointer
Definition: StlIterators.h:390
Eigen::internal::indexed_based_stl_iterator_base::operator++
Derived & operator++()
Definition: StlIterators.h:50
Eigen::internal::subvector_stl_reverse_iterator
Definition: StlIterators.h:361
Eigen::internal::subvector_stl_iterator::operator[]
reference operator[](Index i) const
Definition: StlIterators.h:348
Eigen::internal::conditional
Definition: Meta.h:109
Eigen::internal::indexed_based_stl_iterator_base::operator+=
Derived & operator+=(Index b)
Definition: StlIterators.h:61
Eigen::internal::indexed_based_stl_iterator_base::operator<=
bool operator<=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:79
Eigen::DenseBase::cbegin
const_iterator cbegin() const
Definition: StlIterators.h:426
Eigen::internal::generic_randaccess_stl_iterator::pointer
internal::conditional< bool(is_lvalue), value_type *, const value_type * >::type pointer
Definition: StlIterators.h:291
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator<=
bool operator<=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:158
Eigen::internal::pointer_based_stl_iterator::other_iterator
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:184
Eigen::internal::subvector_stl_reverse_iterator::subvector_stl_reverse_iterator
subvector_stl_reverse_iterator()
Definition: StlIterators.h:392
Eigen::internal::indexed_based_stl_reverse_iterator_base::non_const_iterator
indexed_based_stl_reverse_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:105
Eigen::internal::indexed_based_stl_reverse_iterator_base::const_iterator
indexed_based_stl_reverse_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:106
EIGEN_NO_THROW
#define EIGEN_NO_THROW
Definition: Macros.h:1420
Eigen::internal::generic_randaccess_stl_iterator::generic_randaccess_stl_iterator
generic_randaccess_stl_iterator(const typename Base::non_const_iterator &other)
Definition: StlIterators.h:296
Eigen::internal::indexed_based_stl_iterator_base::indexed_based_stl_iterator_base
indexed_based_stl_iterator_base(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:39
Eigen::internal::pointer_based_stl_iterator::non_const_iterator
pointer_based_stl_iterator< typename internal::remove_const< XprType >::type > non_const_iterator
Definition: StlIterators.h:182
Eigen::internal::indexed_based_stl_reverse_iterator_base::XprType
traits::XprType XprType
Definition: StlIterators.h:104
Eigen::internal::pointer_based_stl_iterator::operator-
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:235
Eigen::internal::pointer_based_stl_iterator::const_iterator
pointer_based_stl_iterator< typename internal::add_const< XprType >::type > const_iterator
Definition: StlIterators.h:183
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator==
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:162
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator<=
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:165
Eigen::internal::subvector_stl_iterator::pointer
subvector_stl_iterator_ptr pointer
Definition: StlIterators.h:342
Eigen::internal::indexed_based_stl_reverse_iterator_base::derived
const Derived & derived() const
Definition: StlIterators.h:172
internal
Definition: BandTriangularSolver.h:13
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator-
friend Derived operator-(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:136
Eigen::internal::subvector_stl_iterator::reference
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:328
Eigen::internal::indexed_based_stl_reverse_iterator_base::operator>
bool operator>(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:159
Eigen::internal::generic_randaccess_stl_iterator::reference
internal::conditional< bool(is_lvalue), value_type &, read_only_ref_t >::type reference
Definition: StlIterators.h:292
Eigen::internal::pointer_based_stl_iterator::operator-=
pointer_based_stl_iterator & operator-=(Index b)
Definition: StlIterators.h:229
Eigen::internal::indexed_based_stl_iterator_base::traits
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:24
Eigen::internal::pointer_based_stl_iterator::operator--
pointer_based_stl_iterator operator--(int)
Definition: StlIterators.h:221
Eigen::internal::indexed_based_stl_iterator_base::operator-
friend Derived operator-(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:57
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_iterator< _XprType, Direction > >::non_const_iterator
subvector_stl_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:308
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator
subvector_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:345
Eigen::internal::generic_randaccess_stl_iterator::read_only_ref_t
const typedef value_type read_only_ref_t
Definition: StlIterators.h:287
Eigen::internal::pointer_based_stl_iterator::operator*
reference operator*() const
Definition: StlIterators.h:213
Eigen::internal::pointer_based_stl_iterator::operator++
pointer_based_stl_iterator operator++(int)
Definition: StlIterators.h:220
Eigen::internal::indexed_based_stl_iterator_base::indexed_based_stl_iterator_base
indexed_based_stl_iterator_base(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:37
Eigen::internal::variable_if_dynamic::setValue
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T v) const
Definition: XprHelper.h:139
Eigen::internal::indexed_based_stl_iterator_base::operator>=
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:88
Eigen::internal::subvector_stl_iterator::subvector_stl_iterator
subvector_stl_iterator()
Definition: StlIterators.h:344
i
int i
Definition: BiCGSTAB_step_by_step.cpp:9
pybind_wrapper_test_script.other
other
Definition: pybind_wrapper_test_script.py:42
Eigen::internal::indexed_based_stl_iterator_traits< subvector_stl_reverse_iterator< _XprType, Direction > >::const_iterator
subvector_stl_reverse_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:357
Eigen::internal::has_direct_access
Definition: ForwardDeclarations.h:25
Eigen::internal::pointer_based_stl_iterator::operator+=
pointer_based_stl_iterator & operator+=(Index b)
Definition: StlIterators.h:228
Eigen::internal::indexed_based_stl_iterator_base::operator>=
bool operator>=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:81
Eigen::internal::pointer_based_stl_iterator::operator>=
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:251
Scalar
SCALAR Scalar
Definition: bench_gemm.cpp:46
Eigen::internal::indexed_based_stl_iterator_base::operator-
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:70
Eigen::internal::pointer_based_stl_iterator::operator==
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:246
Eigen::internal::pointer_based_stl_iterator::iterator_category
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:191
Eigen::internal::pointer_based_stl_iterator::operator-
difference_type operator-(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:231
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Eigen::DenseBase::cend
const_iterator cend() const
Definition: StlIterators.h:455
Eigen::internal::subvector_stl_reverse_iterator::Base
indexed_based_stl_reverse_iterator_base< subvector_stl_reverse_iterator > Base
Definition: StlIterators.h:367
Eigen::internal::indexed_based_stl_reverse_iterator_base::traits
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:103


gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:05:01