21#ifndef _vctVarStrideNArrayIterator_h
22#define _vctVarStrideNArrayIterator_h
44template<
class _ownerType,
bool _forward>
91 difference_type offset = 0;
92 difference_type modulus;
94 typename nstride_type::const_reverse_iterator stridesBegin =
ContainerOwner->strides().rbegin();
95 typename nsize_type::const_reverse_iterator sizesBegin =
ContainerOwner->sizes().rbegin();
96 typename nsize_type::const_reverse_iterator sizesEnd =
ContainerOwner->sizes().rend();
97 size_type sizes_value;
98 for (; sizesBegin != sizesEnd;
99 ++sizesBegin, ++stridesBegin) {
100 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
101 modulus = metaindex %
static_cast<difference_type
>(sizes_value);
102 offset += modulus * (*stridesBegin);
103 metaindex /=
static_cast<difference_type
>(sizes_value);
215 return ( this->MetaIndex - other.
MetaIndex );
222 difference_type metaindex =
MetaIndex + index;
223 difference_type offset = 0;
224 difference_type modulus;
226 typename nstride_type::const_reverse_iterator stridesBegin =
ContainerOwner->strides().rbegin();
227 typename nsize_type::const_reverse_iterator sizesBegin =
ContainerOwner->sizes().rbegin();
228 typename nsize_type::const_reverse_iterator sizesEnd =
ContainerOwner->sizes().rend();
229 size_type sizes_value;
230 for (; sizesBegin != sizesEnd;
231 ++sizesBegin, ++stridesBegin) {
232 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
233 modulus = metaindex %
static_cast<difference_type
>(sizes_value);
234 offset += modulus * (*stridesBegin);
235 metaindex /=
static_cast<difference_type
>(sizes_value);
239 value_type * elementPointer = pointer + offset;
241 return *elementPointer;
257 ( this->MetaIndex == other.
MetaIndex ) &&
265 return !( *
this == other );
278 return ((*
this) - other) < 0;
282 return ((*
this) < other) || ((*this) == other);
289 return other < (*this);
293 return ((*
this) > other) || ((*this) == other);
301template<
class _ownerType,
bool _forward>
411 difference_type metaindex = this->
MetaIndex + index;
412 difference_type offset = 0;
413 difference_type modulus;
415 typename nstride_type::const_reverse_iterator stridesBegin = this->
ContainerOwner->strides().rbegin();
416 typename nsize_type::const_reverse_iterator sizesBegin = this->
ContainerOwner->sizes().rbegin();
417 typename nsize_type::const_reverse_iterator sizesEnd = this->
ContainerOwner->sizes().rend();
418 size_type sizes_value;
420 sizesBegin != sizesEnd;
421 ++sizesBegin, ++stridesBegin) {
422 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
423 modulus = metaindex %
static_cast<difference_type
>(sizes_value);
424 offset += modulus * (*stridesBegin);
425 metaindex /=
static_cast<difference_type
>(sizes_value);
429 value_type * elementPointer = pointer + offset;
431 return *elementPointer;
444template<
class _ownerType,
bool _forward>
450 return result += difference;
455template<
class _ownerType,
bool _forward>
461 return result += difference;
466template<
class _ownerType,
bool _forward>
472 return result -= difference;
479template<
class _ownerType,
bool _forward>
485 return result += difference;
491template<
class _ownerType,
bool _forward>
497 return result += difference;
502template<
class _ownerType,
bool _forward>
508 return result -= difference;
Definition vctVarStrideNArrayIterator.h:46
bool operator>=(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:291
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
bool operator<(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:276
std::random_access_iterator_tag iterator_category
Definition vctVarStrideNArrayIterator.h:66
bool operator==(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:253
@ DIMENSION
Definition vctVarStrideNArrayIterator.h:49
bool operator<=(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:280
difference_type MetaIndex
Definition vctVarStrideNArrayIterator.h:75
vctVarStrideNArrayConstIterator(void)
Definition vctVarStrideNArrayIterator.h:115
const OwnerType * ContainerOwner
Definition vctVarStrideNArrayIterator.h:71
vctVarStrideNArrayConstIterator(const ThisType &other)
Definition vctVarStrideNArrayIterator.h:134
ThisType & operator+=(difference_type difference)
Definition vctVarStrideNArrayIterator.h:190
void UpdateElementPointer(void)
Definition vctVarStrideNArrayIterator.h:88
const value_type & operator[](difference_type index) const
Definition vctVarStrideNArrayIterator.h:220
value_type * ElementPointer
Definition vctVarStrideNArrayIterator.h:82
ThisType & operator++(void)
Definition vctVarStrideNArrayIterator.h:152
const value_type & operator*(void) const
Definition vctVarStrideNArrayIterator.h:246
vctVarStrideNArrayConstIterator< ThisType, _forward > ThisType
Definition vctVarStrideNArrayIterator.h:58
ThisType OwnerType
Definition vctVarStrideNArrayIterator.h:62
vctVarStrideNArrayConstIterator(const OwnerType *container, difference_type index=0)
Definition vctVarStrideNArrayIterator.h:125
ThisType & operator=(const ThisType &other)
Definition vctVarStrideNArrayIterator.h:142
ThisType::value_type _elementType
Definition vctVarStrideNArrayIterator.h:50
@ DIRECTION
Definition vctVarStrideNArrayIterator.h:55
difference_type operator-(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:213
ThisType & operator-=(difference_type difference)
Definition vctVarStrideNArrayIterator.h:201
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
bool operator>(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:287
ThisType & operator--(void)
Definition vctVarStrideNArrayIterator.h:170
bool operator!=(const ThisType &other) const
Definition vctVarStrideNArrayIterator.h:263
Definition vctVarStrideNArrayIterator.h:304
vctVarStrideNArrayIterator()
Definition vctVarStrideNArrayIterator.h:320
vctVarStrideNArrayConstIterator< ThisType, _forward > BaseType
Definition vctVarStrideNArrayIterator.h:315
ThisType & operator+=(difference_type difference)
Definition vctVarStrideNArrayIterator.h:390
vctVarStrideNArrayIterator(const OwnerType *container, difference_type index=0)
Definition vctVarStrideNArrayIterator.h:328
ThisType & operator--(void)
Definition vctVarStrideNArrayIterator.h:371
ThisType & operator-=(difference_type difference)
Definition vctVarStrideNArrayIterator.h:400
value_type & operator[](difference_type index)
Definition vctVarStrideNArrayIterator.h:409
ThisType & operator=(const ThisType &other)
Definition vctVarStrideNArrayIterator.h:340
@ DIMENSION
Definition vctVarStrideNArrayIterator.h:307
BaseType::iterator_category iterator_category
Definition vctVarStrideNArrayIterator.h:316
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
ThisType OwnerType
Definition vctVarStrideNArrayIterator.h:314
ThisType::value_type _elementType
Definition vctVarStrideNArrayIterator.h:308
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
vctVarStrideNArrayIterator< ThisType, _forward > ThisType
Definition vctVarStrideNArrayIterator.h:313
vctVarStrideNArrayIterator(const ThisType &other)
Definition vctVarStrideNArrayIterator.h:334
ThisType & operator++(void)
Definition vctVarStrideNArrayIterator.h:351
@ DIRECTION
Definition vctVarStrideNArrayIterator.h:312
value_type & operator*(void) const
Definition vctVarStrideNArrayIterator.h:436
Basic traits for the cisstVector containers.
OwnerType::iterator iterator
Definition vctDynamicConstMatrixBase.h:92
Declaration of vctDynamicNArrayOwner.
vctVarStrideNArrayConstIterator< _ownerType, _forward > operator+(const vctVarStrideNArrayConstIterator< _ownerType, _forward > &iterator, typename vctVarStrideNArrayConstIterator< _ownerType, _forward >::difference_type difference)
Definition vctVarStrideNArrayIterator.h:446
vctVarStrideNArrayConstIterator< _ownerType, _forward > operator-(const vctVarStrideNArrayConstIterator< _ownerType, _forward > &iterator, typename vctVarStrideNArrayConstIterator< _ownerType, _forward >::difference_type difference)
Definition vctVarStrideNArrayIterator.h:468
Declaration of vctVarStrideVectorConstIterator and vctVarStrideVectorIterator.