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:
30  friend class indexed_based_stl_iterator_base<typename traits::const_iterator>;
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 
37  indexed_based_stl_iterator_base(XprType& xpr, Index index) EIGEN_NO_THROW : mp_xpr(&xpr), m_index(index) {}
38 
40  : mp_xpr(other.mp_xpr), m_index(other.m_index)
41  {}
42 
43  indexed_based_stl_iterator_base& operator=(const non_const_iterator& other)
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 
70  difference_type operator-(const other_iterator& other) const
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 
95  XprType *mp_xpr;
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:
109  friend class indexed_based_stl_reverse_iterator_base<typename traits::const_iterator>;
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 
116  indexed_based_stl_reverse_iterator_base(XprType& xpr, Index index) : mp_xpr(&xpr), m_index(index) {}
117 
119  : mp_xpr(other.mp_xpr), m_index(other.m_index)
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 
149  difference_type operator-(const other_iterator& other) const
150  {
151  eigen_assert(mp_xpr == other.mp_xpr);
152  return other.m_index - m_index;
153  }
154 
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 
174  XprType *mp_xpr;
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 
197  pointer_based_stl_iterator(XprType& xpr, Index index) EIGEN_NO_THROW : m_incr(xpr.innerStride())
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 
217  pointer_based_stl_iterator& operator++() { m_ptr += m_incr.value(); return *this; }
218  pointer_based_stl_iterator& operator--() { m_ptr -= m_incr.value(); return *this; }
219 
222 
227 
228  pointer_based_stl_iterator& operator+=(Index b) { m_ptr += b*m_incr.value(); return *this; }
229  pointer_based_stl_iterator& operator-=(Index b) { m_ptr -= b*m_incr.value(); return *this; }
230 
232  return (m_ptr - other.m_ptr)/m_incr.value();
233  }
234 
235  difference_type operator-(const other_iterator& other) const {
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;
287  typedef const value_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) {}
336  reference* operator->() { return &m_subvector; }
337  private:
338  reference m_subvector;
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) {}
384  reference* operator->() { return &m_subvector; }
385  private:
386  reference m_subvector;
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
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:165
bool operator!=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:240
SCALAR Scalar
Definition: bench_gemm.cpp:46
pointer_based_stl_iterator & operator--()
Definition: StlIterators.h:218
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:83
friend Derived operator+(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:56
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:24
internal::conditional< Direction==Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:372
reference operator[](Index i) const
Definition: StlIterators.h:348
std::random_access_iterator_tag iterator_category
Definition: StlIterators.h:191
subvector_stl_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:309
Scalar * b
Definition: benchVecAdd.cpp:17
difference_type operator-(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:231
pointer_based_stl_iterator(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:197
difference_type operator-(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:64
bool operator==(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:76
difference_type operator-(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:143
const unsigned int DirectAccessBit
Definition: Constants.h:155
subvector_stl_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:308
pointer_based_stl_iterator< typename internal::add_const< XprType >::type > const_iterator
Definition: StlIterators.h:183
subvector_stl_reverse_iterator_ptr pointer
Definition: StlIterators.h:390
indexed_based_stl_iterator_traits< Derived > traits
Definition: StlIterators.h:103
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:84
bool operator>=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:160
indexed_based_stl_reverse_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:122
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
#define EIGEN_NO_THROW
Definition: Macros.h:1420
internal::conditional< Direction==Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr >::type ConstSubVectorType
Definition: StlIterators.h:324
bool operator<=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:79
bool operator<=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:242
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:376
bool operator!=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:77
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:251
internal::conditional< bool(is_lvalue), value_type *, const value_type * >::type pointer
Definition: StlIterators.h:291
friend Derived operator+(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:58
bool operator>=(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:244
iterator begin()
Definition: StlIterators.h:408
generic_randaccess_stl_iterator< typename internal::add_const< XprType >::type > const_iterator
Definition: StlIterators.h:264
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:107
friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:225
friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:223
pointer_based_stl_iterator & operator++()
Definition: StlIterators.h:217
friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:137
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:184
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:163
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:235
subvector_stl_reverse_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:393
internal::conditional< bool(is_lvalue), value_type &, read_only_ref_t >::type reference
Definition: StlIterators.h:292
indexed_based_stl_iterator_base & operator=(const non_const_iterator &other)
Definition: StlIterators.h:43
indexed_based_stl_reverse_iterator_base< subvector_stl_reverse_iterator > Base
Definition: StlIterators.h:367
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:77
friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base &b)
Definition: StlIterators.h:138
generic_randaccess_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:295
pointer_based_stl_iterator(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:202
bool operator>=(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:81
bool operator!=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:156
internal::conditional< Direction==Vertical, typename XprType::ColXpr, typename XprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:323
bool operator==(const pointer_based_stl_iterator &other) const
Definition: StlIterators.h:239
pointer_based_stl_iterator & operator=(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:206
subvector_stl_iterator(XprType &xpr, Index index)
Definition: StlIterators.h:345
friend Derived operator+(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:135
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
internal::variable_if_dynamic< Index, XprType::InnerStrideAtCompileTime > m_incr
Definition: StlIterators.h:256
pointer_based_stl_iterator operator--(int)
Definition: StlIterators.h:221
#define eigen_assert(x)
Definition: Macros.h:1037
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:167
subvector_stl_reverse_iterator< typename internal::add_const< XprType >::type, Direction > const_iterator
Definition: StlIterators.h:357
internal::conditional< internal::is_const< XprType >::value, non_const_iterator, const_iterator >::type other_iterator
Definition: StlIterators.h:28
pointer_based_stl_iterator< typename internal::remove_const< XprType >::type > non_const_iterator
Definition: StlIterators.h:182
bool operator>=(const other_iterator &other) const
Definition: StlIterators.h:88
indexed_based_stl_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:27
indexed_based_stl_reverse_iterator_base< typename traits::const_iterator > const_iterator
Definition: StlIterators.h:106
indexed_based_stl_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:26
internal::conditional< Direction==Vertical, typename XprType::ColXpr, typename XprType::RowXpr >::type SubVectorType
Definition: StlIterators.h:371
generic_randaccess_stl_iterator< typename internal::remove_const< XprType >::type > non_const_iterator
Definition: StlIterators.h:263
indexed_based_stl_iterator_base< subvector_stl_iterator > Base
Definition: StlIterators.h:319
iterator end()
Definition: StlIterators.h:437
bool operator>(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:80
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:249
friend Derived operator-(const indexed_based_stl_reverse_iterator_base &a, Index b)
Definition: StlIterators.h:136
indexed_based_stl_reverse_iterator_base< typename traits::non_const_iterator > non_const_iterator
Definition: StlIterators.h:105
indexed_based_stl_iterator_base< generic_randaccess_stl_iterator > Base
Definition: StlIterators.h:280
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:149
DenseIndex ret
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:162
bool operator==(const other_iterator &other) const
Definition: StlIterators.h:246
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
indexed_based_stl_reverse_iterator_base(const non_const_iterator &other)
Definition: StlIterators.h:118
pointer_based_stl_iterator operator++(int)
Definition: StlIterators.h:220
bool operator==(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:155
difference_type operator-(const other_iterator &other) const
Definition: StlIterators.h:70
friend Derived operator-(Index a, const indexed_based_stl_iterator_base &b)
Definition: StlIterators.h:59
internal::conditional< bool(is_lvalue), SubVectorType, ConstSubVectorType >::type reference
Definition: StlIterators.h:328
CwiseBinaryOp< internal::scalar_sum_op< double, double >, const CpyMatrixXd, const CpyMatrixXd > XprType
Definition: nestbyvalue.cpp:15
generic_randaccess_stl_iterator(const typename Base::non_const_iterator &other)
Definition: StlIterators.h:296
pointer_based_stl_iterator & operator+=(Index b)
Definition: StlIterators.h:228
bool operator!=(const other_iterator &other) const
Definition: StlIterators.h:247
friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator &b)
Definition: StlIterators.h:226
const_iterator cbegin() const
Definition: StlIterators.h:426
indexed_based_stl_reverse_iterator_base(XprType &xpr, Index index)
Definition: StlIterators.h:116
friend Derived operator-(const indexed_based_stl_iterator_base &a, Index b)
Definition: StlIterators.h:57
subvector_stl_iterator_ptr pointer
Definition: StlIterators.h:342
Generic expression where a coefficient-wise unary operator is applied to an expression.
Definition: CwiseUnaryOp.h:55
bool operator<=(const other_iterator &other) const
Definition: StlIterators.h:86
subvector_stl_reverse_iterator< typename internal::remove_const< XprType >::type, Direction > non_const_iterator
Definition: StlIterators.h:356
indexed_based_stl_iterator_base(const non_const_iterator &other) EIGEN_NO_THROW
Definition: StlIterators.h:39
indexed_based_stl_iterator_base(XprType &xpr, Index index) EIGEN_NO_THROW
Definition: StlIterators.h:37
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
Definition: StaticAssert.h:142
pointer_based_stl_iterator & operator-=(Index b)
Definition: StlIterators.h:229
bool operator<(const indexed_based_stl_iterator_base &other) const
Definition: StlIterators.h:78
friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator &a, Index b)
Definition: StlIterators.h:224
bool operator<=(const indexed_based_stl_reverse_iterator_base &other) const
Definition: StlIterators.h:158
Definition: pytypes.h:1370
const_iterator cend() const
Definition: StlIterators.h:455


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:36:21