23#ifndef VCL_MESH_ITERATORS_ELEMENT_CONTAINER_ITERATOR_H
24#define VCL_MESH_ITERATORS_ELEMENT_CONTAINER_ITERATOR_H
32 template<
typename,
typename...>
38 using ContIt = std::conditional_t<
40 typename Container<T>::const_iterator,
41 typename Container<T>::iterator>;
46 using reference = std::conditional_t<CNST, const T&, T&>;
47 using pointer = std::conditional_t<CNST, const T*, T*>;
48 using iterator_category = std::random_access_iterator_tag;
75 difference_type) = &ElementContainerIterator::assignSumJump;
80 &ElementContainerIterator::diffJump;
95 mAssignSumFun = &ElementContainerIterator::assignSumFast;
96 mDiffFun = &ElementContainerIterator::diffFast;
100 reference operator*()
const {
return *mIt; }
102 pointer operator->()
const {
return &*mIt; }
106 return mIt ==
oi.mIt;
111 return mIt !=
oi.mIt;
118 return (this->*mPostIncrementFun)();
125 return (this->*mPostDecrementFun)();
130 return (this->*mAssignSumFun)(
n);
135 return (this->*mAssignSumFun)(-
n);
152 return (this->*mDiffFun)(
oi);
155 reference operator[](difference_type
i) {
return *(*
this +
i); }
169 return mIt <=
oi.mIt;
174 return mIt >=
oi.mIt;
186 }
while (mIt != mVec->end() && mIt->deleted());
199 }
while (mIt != mVec->end() && mIt->deleted());
232 }
while (mIt != mVec->begin() && mIt->deleted());
245 }
while (mIt != mVec->begin() && mIt->deleted());
272 difference_type
m =
n;
283 ElementContainerIterator& assignSumFast(difference_type n)
289 difference_type diffJump(
const ElementContainerIterator& oi)
const
291 ElementContainerIterator i = oi;
292 difference_type diff = 0;
300 difference_type diffFast(
const ElementContainerIterator& oi)
const
302 return this->mIt - oi.mIt;
306template<
template<
typename,
typename...>
typename Container,
typename T>
307using ConstElementContainerIterator =
308 ElementContainerIterator<Container, T, true>;
312template<
template<
typename,
typename...>
typename Container,
typename T,
bool C>
Definition element_container_iterator.h:37
ElementContainerIterator postIncrementJump()
Post increment function that will be called if we need to jump deleted elements.
Definition element_container_iterator.h:194
ElementContainerIterator postDecrementFast()
Post decrement function that will be called if we don't need to jump deleted elements.
Definition element_container_iterator.h:263
ElementContainerIterator & decrementJump()
Decrement function that will be called if we need to jump deleted elements.
Definition element_container_iterator.h:228
ElementContainerIterator postIncrementFast()
Post increment function that will be called if we don't need to jump deleted elements.
Definition element_container_iterator.h:217
ElementContainerIterator & incrementJump()
Increment function that will be called if we need to jump deleted elements.
Definition element_container_iterator.h:182
ElementContainerIterator postDecrementJump()
Post decrement function that will be called if we need to jump deleted elements.
Definition element_container_iterator.h:240
ElementContainerIterator & decrementFast()
Decrement function that will be called if we don't need to jump deleted elements.
Definition element_container_iterator.h:253
ElementContainerIterator & incrementFast()
Increment function that will be called if we don't need to jump deleted elements.
Definition element_container_iterator.h:207
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43