22#ifndef _vctDynamicNArrayRef_h
23#define _vctDynamicNArrayRef_h
86template <
class _elementType, vct::
size_type _dimension>
88 public vctDynamicNArrayBase<vctDynamicNArrayRefOwner<_elementType, _dimension>, _elementType, _dimension>
108 this->
SetRef(0, nsize_type(0), nstride_type(0));
120 this->
SetRef(
const_cast<pointer
>(other.
Pointer()), other.sizes(), other.strides());
134 template <
class __ownerType>
137 this->
SetRef(otherNArray);
143 template <
class __ownerType>
152 template <
size_type __size, str
ide_type __str
ide,
typename __dataPtrType>
161 template <
class __ownerType>
170 template <
size_type __rows,
size_type __cols, str
ide_type __rowStr
ide, str
ide_type __colStr
ide,
typename __dataPtrType>
188 template <
class __ownerType>
191 this->
SetRef(otherNArray.
Pointer(), otherNArray.sizes(), otherNArray.strides());
201 template <
class __ownerType>
203 const nsize_type & startPosition,
204 const nsize_type & lengths)
207 this->
SetRef(otherNArray.
Pointer(startPosition), lengths, otherNArray.strides());
217 template <
class __ownerType>
219 const ndimension_type & dimensions)
224 const typename ndimension_type::const_iterator dimensionsBegin = dimensions.begin();
225 const typename ndimension_type::const_iterator dimensionsEnd = dimensions.end();
226 typename ndimension_type::const_iterator dimensionsIter;
227 typename nsize_type::iterator sizesIter =
sizes.begin();
228 typename nstride_type::iterator stridesIter =
strides.begin();
229 for (dimensionsIter = dimensionsBegin;
230 dimensionsIter != dimensionsEnd;
231 ++dimensionsIter, ++sizesIter, ++stridesIter) {
232 *sizesIter = otherNArray.size(*dimensionsIter);
233 *stridesIter = otherNArray.stride(*dimensionsIter);
247 template <
class __ownerType>
258 typedef typename OtherArrayType::nsize_type other_nsize_type;
259 typedef typename OtherArrayType::nstride_type other_nstride_type;
262 const typename other_nsize_type::const_iterator otherSizesBegin = otherNArray.sizes().
begin();
263 typename other_nsize_type::const_iterator otherSizesIter;
264 const typename other_nstride_type::const_iterator otherStridesBegin = otherNArray.strides().
begin();
265 typename other_nstride_type::const_iterator otherStridesIter;
266 const typename nsize_type::iterator sizesBegin =
sizes.begin();
267 const typename nsize_type::iterator sizesEnd =
sizes.end();
268 typename nsize_type::iterator sizesIter;
269 const typename nstride_type::iterator stridesBegin =
strides.begin();
270 typename nstride_type::iterator stridesIter;
273 otherSizesIter = otherSizesBegin;
274 otherStridesIter = otherStridesBegin;
275 sizesIter = sizesBegin;
276 stridesIter = stridesBegin;
278 while (sizesIter != sizesEnd) {
284 *sizesIter = *otherSizesIter;
285 *stridesIter = *otherStridesIter;
296 other_nsize_type startPosition(
static_cast<size_type
>(0));
304 template <
class __ownerType>
307 this->
SetRef( vector.Pointer(), nsize_type(vector.size()), nstride_type(vector.stride()) );
313 template <
size_type __size, str
ide_type __str
ide,
typename __dataPtrType>
316 this->
SetRef( vector.
Pointer(), nsize_type(__size), nstride_type(__stride) );
322 template <
class __ownerType>
325 this->
SetRef(matrix.Pointer(),
326 nsize_type(matrix.rows(), matrix.cols()),
327 nstride_type(matrix.row_stride(), matrix.col_stride()));
333 template <
size_type __rows,
size_type __cols, str
ide_type __rowStr
ide, str
ide_type __colStr
ide,
typename __dataPtrType>
337 nsize_type(__rows, __cols),
338 nstride_type(__rowStride, __colStride));
357 template <
class __nArrayOwnerType,
typename __elementType>
Definition vctForwardDeclarations.h:145
Dynamic nArray referencing existing memory (const).
Definition vctDynamicConstNArrayRef.h:91
Definition vctForwardDeclarations.h:119
Definition vctDynamicNArrayBase.h:41
value_type SetAll(const value_type value)
Definition vctDynamicNArrayBase.h:337
iterator begin(void)
Definition vctDynamicNArrayBase.h:91
pointer Pointer(const nsize_type &indices)
Definition vctDynamicNArrayBase.h:154
ThisType & Assign(const vctDynamicConstNArrayBase< __nArrayOwnerType, value_type, DIMENSION > &other)
Definition vctDynamicNArrayBase.h:370
vctDynamicNArrayRef(vctDynamicConstVectorBase< __ownerType, _elementType > &vector)
Definition vctDynamicNArrayRef.h:144
vctDynamicNArrayRef(pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRef.h:126
vctDynamicNArrayBase< vctDynamicNArrayRefOwner< _elementType, DIMENSION >, _elementType, DIMENSION > BaseType
Definition vctDynamicNArrayRef.h:99
vctDynamicNArrayRef(vctFixedSizeConstVectorBase< __size, __stride, _elementType, __dataPtrType > &vector)
Definition vctDynamicNArrayRef.h:153
vctDynamicNArrayRef(vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, _elementType, __dataPtrType > &matrix)
Definition vctDynamicNArrayRef.h:171
@ DIMENSION
Definition vctDynamicNArrayRef.h:92
vctDynamicNArrayRef< _elementType, DIMENSION > ThisType
Definition vctDynamicNArrayRef.h:97
void SubarrayOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray, const nsize_type &startPosition, const nsize_type &lengths)
Definition vctDynamicNArrayRef.h:202
vctDynamicNArrayRef()
Definition vctDynamicNArrayRef.h:106
void SetRef(pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRef.h:180
void SetRef(vctDynamicConstMatrixBase< __ownerType, _elementType > &matrix)
Definition vctDynamicNArrayRef.h:323
void PermutationOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray, const ndimension_type &dimensions)
Definition vctDynamicNArrayRef.h:218
void SetRef(vctFixedSizeConstVectorBase< __size, __stride, _elementType, __dataPtrType > &vector)
Definition vctDynamicNArrayRef.h:314
void SetRef(vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, _elementType, __dataPtrType > &matrix)
Definition vctDynamicNArrayRef.h:334
vctDynamicNArrayRefOwner< _elementType, DIMENSION > NArrayOwnerType
Definition vctDynamicNArrayRef.h:98
NArrayOwnerType::iterator iterator
Definition vctDynamicNArrayRef.h:100
void SliceOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION+1 > &otherNArray, dimension_type dimension, size_type index)
Definition vctDynamicNArrayRef.h:248
vctDynamicNArrayRef(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray)
Definition vctDynamicNArrayRef.h:135
void SetRef(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray)
Definition vctDynamicNArrayRef.h:189
NArrayOwnerType::reverse_iterator reverse_iterator
Definition vctDynamicNArrayRef.h:102
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
vctDynamicNArrayRef(const ThisType &other)
Definition vctDynamicNArrayRef.h:117
ThisType & operator=(const ThisType &other)
Definition vctDynamicNArrayRef.h:347
NArrayOwnerType::const_reverse_iterator const_reverse_iterator
Definition vctDynamicNArrayRef.h:103
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
NArrayOwnerType::const_iterator const_iterator
Definition vctDynamicNArrayRef.h:101
void SetRef(vctDynamicConstVectorBase< __ownerType, _elementType > &vector)
Definition vctDynamicNArrayRef.h:305
vctDynamicNArrayRef(vctDynamicConstMatrixBase< __ownerType, _elementType > &matrix)
Definition vctDynamicNArrayRef.h:162
Definition vctDynamicNArrayRefOwner.h:37
vctVarStrideNArrayIterator< ThisType, true > iterator
Definition vctDynamicNArrayRefOwner.h:48
vctVarStrideNArrayIterator< ThisType, false > reverse_iterator
Definition vctDynamicNArrayRefOwner.h:50
vctVarStrideNArrayConstIterator< ThisType, true > const_iterator
Definition vctDynamicNArrayRefOwner.h:49
vctVarStrideNArrayConstIterator< ThisType, false > const_reverse_iterator
Definition vctDynamicNArrayRefOwner.h:51
void SetRef(pointer data, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRefOwner.h:67
A template for a fixed size matrix with fixed spacing in memory.
Definition vctFixedSizeConstMatrixBase.h:104
const_pointer Pointer(size_type rowIndex, size_type colIndex) const
Definition vctFixedSizeConstMatrixBase.h:329
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeConstVectorBase.h:108
const_pointer Pointer(size_type index=0) const
Definition vctFixedSizeConstVectorBase.h:268
#define CMN_ASSERT(expr)
Definition cmnAssert.h:97
const nsize_type & sizes(void) const
Definition vctDynamicConstMatrixBase.h:233
bool LesserOrEqual(const vctDynamicConstMatrixBase< __matrixOwnerType, _elementType > &otherMatrix) const
Definition vctDynamicConstMatrixBase.h:758
const nstride_type & strides(void) const
Definition vctDynamicConstMatrixBase.h:258
dimension_type dimension(void) const
Definition vctDynamicConstNArrayBase.h:331
OwnerType NArray
Definition vctDynamicConstNArrayBase.h:226
Declaration of vctDynamicConstNArrayRef.
Declaration of vctDynamicNArrayBase.
Declaration of vctDynamicNArrayRefOwner.