22#ifndef _vctDynamicNArrayRefOwner_h
23#define _vctDynamicNArrayRefOwner_h
35template<
class _elementType, vct::
size_type _dimension>
61 const nsize_type &
sizes,
68 const nsize_type &
sizes,
86 const nsize_type &
sizes(
void)
const
149 indicesRef(
reinterpret_cast<stride_type *
>(
const_cast<size_type *
>(indices.Pointer())));
162 const_pointer
Pointer(
const nsize_type & indices)
const
165 indicesRef(
reinterpret_cast<stride_type *
>(
const_cast<size_type *
>(indices.Pointer())));
191 size_type endIndex =
size() - 1;
202 size_type endIndex =
size() - 1;
237 if (sorted_strides[i - 1] == sorted_strides[i]) {
238 if (sorted_sizes[i - 1] >= sorted_sizes[i]) {
242 if (sorted_strides[i - 1] > sorted_strides[i]) {
248 std::swap(sorted_strides[i - 1], sorted_strides[i]);
249 std::swap(sorted_sizes[i - 1], sorted_sizes[i]);
257 typename nsize_type::const_reverse_iterator sizesIter = sorted_sizes.rbegin();
258 typename nstride_type::const_reverse_iterator stridesIter = sorted_strides.rbegin();
259 const typename nstride_type::const_reverse_iterator stridesEnd = sorted_strides.rend();
260 size_type sizesIter_value;
261 stride_type previous_stride;
263 if (stridesIter != stridesEnd) {
264 if (*stridesIter != 1) {
274 stridesIter != stridesEnd;
275 ++stridesIter, ++sizesIter) {
276 sizesIter_value = (*sizesIter == 0) ? 1 : *sizesIter;
277 if (*stridesIter !=
static_cast<stride_type
>(sizesIter_value) * previous_stride) {
281 previous_stride = *stridesIter;
pointer Data
Definition vctDynamicNArrayRefOwner.h:221
pointer Pointer(void)
Definition vctDynamicNArrayRefOwner.h:139
const_pointer Pointer(const nsize_type &indices) const
Definition vctDynamicNArrayRefOwner.h:162
const_reverse_iterator rbegin(void) const
Definition vctDynamicNArrayRefOwner.h:200
@ DIMENSION
Definition vctDynamicNArrayRefOwner.h:40
bool IsCompact(void) const
Definition vctDynamicNArrayRefOwner.h:212
const_reverse_iterator rend(void) const
Definition vctDynamicNArrayRefOwner.h:206
nstride_type StridesMember
Definition vctDynamicNArrayRefOwner.h:220
const_pointer Pointer(void) const
Definition vctDynamicNArrayRefOwner.h:155
dimension_type dimension(void) const
Definition vctDynamicNArrayRefOwner.h:79
iterator begin(void)
Definition vctDynamicNArrayRefOwner.h:169
vctDynamicNArrayRefOwner(pointer data, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRefOwner.h:60
vctDynamicNArrayRefOwner()
Definition vctDynamicNArrayRefOwner.h:54
reverse_iterator rbegin(void)
Definition vctDynamicNArrayRefOwner.h:189
difference_type stride(dimension_type dimension) const
Definition vctDynamicNArrayRefOwner.h:129
vctVarStrideNArrayIterator< ThisType, true > iterator
Definition vctDynamicNArrayRefOwner.h:48
const_iterator begin(void) const
Definition vctDynamicNArrayRefOwner.h:179
iterator end(void)
Definition vctDynamicNArrayRefOwner.h:174
void UpdateCachedData(void)
Definition vctDynamicNArrayRefOwner.h:224
vctVarStrideNArrayIterator< ThisType, false > reverse_iterator
Definition vctDynamicNArrayRefOwner.h:50
pointer Pointer(const nindex_type &indices)
Definition vctDynamicNArrayRefOwner.h:146
const nsize_type & sizes(void) const
Definition vctDynamicNArrayRefOwner.h:86
reverse_iterator rend(void)
Definition vctDynamicNArrayRefOwner.h:195
bool IsCompactMember
Definition vctDynamicNArrayRefOwner.h:222
vctVarStrideNArrayConstIterator< ThisType, true > const_iterator
Definition vctDynamicNArrayRefOwner.h:49
vctDynamicNArrayRefOwner< _elementType, DIMENSION > ThisType
Definition vctDynamicNArrayRefOwner.h:45
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
size_type size(void) const
Definition vctDynamicNArrayRefOwner.h:111
size_type size(dimension_type dimension) const
Definition vctDynamicNArrayRefOwner.h:97
vctVarStrideNArrayConstIterator< ThisType, false > const_reverse_iterator
Definition vctDynamicNArrayRefOwner.h:51
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
const nstride_type & strides(void) const
Definition vctDynamicNArrayRefOwner.h:121
void SetRef(pointer data, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRefOwner.h:67
const_iterator end(void) const
Definition vctDynamicNArrayRefOwner.h:184
nsize_type SizesMember
Definition vctDynamicNArrayRefOwner.h:219
Definition vctForwardDeclarations.h:86
Definition vctVarStrideNArrayIterator.h:46
Definition vctVarStrideNArrayIterator.h:304
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
vctDynamicConstMatrixBase< _matrixOwnerType, _elementType > ThisType
Definition vctDynamicConstMatrixBase.h:86
Declaration of vctNArrayConstIterator and vctVarStrideNArrayIterator.