22 #ifndef _vctVarStrideNArrayIterator_h
23 #define _vctVarStrideNArrayIterator_h
45 template<
class _ownerType,
bool _forward>
47 public std::iterator<std::random_access_iterator_tag,
48 typename _ownerType::value_type>
68 typedef std::iterator<std::random_access_iterator_tag, value_type>
BaseType;
100 typename nstride_type::const_reverse_iterator stridesBegin =
ContainerOwner->strides().rbegin();
101 typename nsize_type::const_reverse_iterator sizesBegin =
ContainerOwner->sizes().rbegin();
102 typename nsize_type::const_reverse_iterator sizesEnd =
ContainerOwner->sizes().rend();
104 for (; sizesBegin != sizesEnd;
105 ++sizesBegin, ++stridesBegin) {
106 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
108 offset += modulus * (*stridesBegin);
114 value_type * pointer =
const_cast<value_type *
>(
ContainerOwner->Pointer() );
232 typename nstride_type::const_reverse_iterator stridesBegin =
ContainerOwner->strides().rbegin();
233 typename nsize_type::const_reverse_iterator sizesBegin =
ContainerOwner->sizes().rbegin();
234 typename nsize_type::const_reverse_iterator sizesEnd =
ContainerOwner->sizes().rend();
236 for (; sizesBegin != sizesEnd;
237 ++sizesBegin, ++stridesBegin) {
238 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
240 offset += modulus * (*stridesBegin);
244 value_type * pointer =
const_cast<value_type *
>(
ContainerOwner->Pointer() );
245 value_type * elementPointer = pointer + offset;
247 return *elementPointer;
271 return !( *
this == other );
284 return ((*
this) - other) < 0;
288 return ((*
this) < other) || ((*this) == other);
295 return other < (*this);
299 return ((*
this) > other) || ((*this) == other);
307 template<
class _ownerType,
bool _forward>
421 typename nstride_type::const_reverse_iterator stridesBegin = this->
ContainerOwner->strides().rbegin();
422 typename nsize_type::const_reverse_iterator sizesBegin = this->
ContainerOwner->sizes().rbegin();
423 typename nsize_type::const_reverse_iterator sizesEnd = this->
ContainerOwner->sizes().rend();
426 sizesBegin != sizesEnd;
427 ++sizesBegin, ++stridesBegin) {
428 sizes_value = (*sizesBegin == 0) ? 1 : *sizesBegin;
430 offset += modulus * (*stridesBegin);
434 value_type * pointer =
const_cast<value_type *
>(this->
ContainerOwner->Pointer());
435 value_type * elementPointer = pointer + offset;
437 return *elementPointer;
450 template<
class _ownerType,
bool _forward>
456 return result += difference;
461 template<
class _ownerType,
bool _forward>
467 return result += difference;
472 template<
class _ownerType,
bool _forward>
478 return result -= difference;
485 template<
class _ownerType,
bool _forward>
491 return result += difference;
497 template<
class _ownerType,
bool _forward>
503 return result += difference;
508 template<
class _ownerType,
bool _forward>
514 return result -= difference;
518 #endif // _vctVarStrideNArrayIterator_h
vctVarStrideNArrayIterator()
Definition: vctVarStrideNArrayIterator.h:326
vctVarStrideNArrayIterator(const ThisType &other)
Definition: vctVarStrideNArrayIterator.h:340
bool operator==(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:259
const value_type & operator*(void) const
Definition: vctVarStrideNArrayIterator.h:252
_ownerType::value_type _elementType
Definition: vctVarStrideNArrayIterator.h:314
void UpdateElementPointer(void)
Definition: vctVarStrideNArrayIterator.h:94
std::iterator< std::random_access_iterator_tag, value_type > BaseType
Definition: vctVarStrideNArrayIterator.h:68
ThisType & operator+=(difference_type difference)
Definition: vctVarStrideNArrayIterator.h:196
ThisType & operator-=(difference_type difference)
Definition: vctVarStrideNArrayIterator.h:207
size_t size_type
Definition: vctContainerTraits.h:35
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
Declaration of vctDynamicNArrayOwner.
BaseType::iterator_category iterator_category
Definition: vctVarStrideNArrayIterator.h:72
vctVarStrideNArrayConstIterator(const ThisType &other)
Definition: vctVarStrideNArrayIterator.h:140
vctVarStrideNArrayConstIterator(void)
Definition: vctVarStrideNArrayIterator.h:121
vctVarStrideNArrayConstIterator< _ownerType, _forward > operator-(const vctVarStrideNArrayConstIterator< _ownerType, _forward > &iterator, typename vctVarStrideNArrayConstIterator< _ownerType, _forward >::difference_type difference)
Definition: vctVarStrideNArrayIterator.h:474
BaseType::iterator_category iterator_category
Definition: vctVarStrideNArrayIterator.h:322
vctVarStrideNArrayConstIterator< _ownerType, _forward > BaseType
Definition: vctVarStrideNArrayIterator.h:321
ThisType & operator+=(difference_type difference)
Definition: vctVarStrideNArrayIterator.h:396
ptrdiff_t difference_type
Definition: vctContainerTraits.h:38
Definition: vctForwardDeclarations.h:77
_ownerType OwnerType
Definition: vctVarStrideNArrayIterator.h:320
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
vctVarStrideNArrayIterator(const OwnerType *container, difference_type index=0)
Definition: vctVarStrideNArrayIterator.h:334
bool operator<=(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:286
Basic traits for the cisstVector containers.
value_type & operator[](difference_type index)
Definition: vctVarStrideNArrayIterator.h:415
Declaration of vctVarStrideVectorConstIterator and vctVarStrideVectorIterator.
_ownerType::value_type _elementType
Definition: vctVarStrideNArrayIterator.h:53
bool operator!=(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:269
ThisType & operator++(void)
Definition: vctVarStrideNArrayIterator.h:357
vctVarStrideNArrayIterator< _ownerType, _forward > ThisType
Definition: vctVarStrideNArrayIterator.h:319
Definition: vctVarStrideNArrayIterator.h:313
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
ThisType & operator-=(difference_type difference)
Definition: vctVarStrideNArrayIterator.h:406
Definition: vctForwardDeclarations.h:74
ThisType & operator--(void)
Definition: vctVarStrideNArrayIterator.h:176
bool operator<(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:282
value_type * ElementPointer
Definition: vctVarStrideNArrayIterator.h:88
ThisType & operator++(void)
Definition: vctVarStrideNArrayIterator.h:158
value_type & operator*(void)
Definition: vctVarStrideNArrayIterator.h:442
bool operator>(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:293
vctVarStrideNArrayConstIterator(const OwnerType *container, difference_type index=0)
Definition: vctVarStrideNArrayIterator.h:131
ThisType & operator=(const ThisType &other)
Definition: vctVarStrideNArrayIterator.h:148
_ownerType OwnerType
Definition: vctVarStrideNArrayIterator.h:65
const OwnerType * ContainerOwner
Definition: vctVarStrideNArrayIterator.h:77
ThisType & operator--(void)
Definition: vctVarStrideNArrayIterator.h:377
difference_type MetaIndex
Definition: vctVarStrideNArrayIterator.h:81
Definition: vctVarStrideNArrayIterator.h:318
bool operator>=(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:297
Definition: vctVarStrideNArrayIterator.h:58
difference_type operator-(const ThisType &other) const
Definition: vctVarStrideNArrayIterator.h:219
ThisType & operator=(const ThisType &other)
Definition: vctVarStrideNArrayIterator.h:346
vctVarStrideNArrayConstIterator< _ownerType, _forward > operator+(const vctVarStrideNArrayConstIterator< _ownerType, _forward > &iterator, typename vctVarStrideNArrayConstIterator< _ownerType, _forward >::difference_type difference)
Definition: vctVarStrideNArrayIterator.h:452
Definition: vctVarStrideNArrayIterator.h:52
vctVarStrideNArrayConstIterator< _ownerType, _forward > ThisType
Definition: vctVarStrideNArrayIterator.h:61
const value_type & operator[](difference_type index) const
Definition: vctVarStrideNArrayIterator.h:226