22 #ifndef _vctDynamicNArrayRef_h
23 #define _vctDynamicNArrayRef_h
86 template <
class _elementType, vct::
size_type _dimension>
88 public vctDynamicNArrayBase<vctDynamicNArrayRefOwner<_elementType, _dimension>, _elementType, _dimension>
108 this->
SetRef(0, nsize_type(0), nstride_type(0));
128 this->
SetRef(dataPointer, sizes, 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>
201 template <
class __ownerType>
203 const nsize_type & startPosition,
204 const nsize_type & lengths)
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) {
279 if (i == dimension) {
284 *sizesIter = *otherSizesIter;
285 *stridesIter = *otherStridesIter;
296 other_nsize_type startPosition(static_cast<size_type>(0));
304 template <
class __ownerType>
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>
326 nsize_type(matrix.
rows(), matrix.
cols()),
333 template <
size_type __rows,
size_type __cols, str
ide_type __rowStr
ide, str
ide_type __colStr
ide,
typename __dataPtrType>
336 this->
SetRef(matrix.Pointer(),
337 nsize_type(__rows, __cols),
338 nstride_type(__rowStride, __colStride));
357 template <
class __nArrayOwnerType,
typename __elementType>
374 #endif // _vctDynamicNArrayRef_h
A template for a fixed size matrix with fixed spacing in memory.
Definition: vctFixedSizeConstMatrixBase.h:103
#define CMN_ASSERT(expr)
Definition: cmnAssert.h:90
dimension_type dimension(void) const
Definition: vctDynamicConstNArrayBase.h:332
vctDynamicNArrayRef(const ThisType &other)
Definition: vctDynamicNArrayRef.h:117
const nsize_type & sizes(void) const
Definition: vctDynamicConstNArrayBase.h:308
void SetRef(vctDynamicConstVectorBase< __ownerType, _elementType > &vector)
Definition: vctDynamicNArrayRef.h:305
VCT_NARRAY_TRAITS_TYPEDEFS(DIMENSION)
vctDynamicNArrayRef(vctDynamicConstMatrixBase< __ownerType, _elementType > &matrix)
Definition: vctDynamicNArrayRef.h:162
void SubarrayOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray, const nsize_type &startPosition, const nsize_type &lengths)
Definition: vctDynamicNArrayRef.h:202
vctDynamicNArrayRef(vctDynamicConstVectorBase< __ownerType, _elementType > &vector)
Definition: vctDynamicNArrayRef.h:144
vctDynamicNArrayRef(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray)
Definition: vctDynamicNArrayRef.h:135
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
size_t size_type
Definition: vctContainerTraits.h:35
void PermutationOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray, const ndimension_type &dimensions)
Definition: vctDynamicNArrayRef.h:218
bool LesserOrEqual(const vctDynamicConstNArrayBase< __nArrayOwnerType, value_type, DIMENSION > &otherNArray) const
Definition: vctDynamicConstNArrayBase.h:816
NArrayOwnerType::iterator iterator
Definition: vctDynamicNArrayRef.h:100
NArrayOwnerType::const_iterator const_iterator
Definition: vctDynamicNArrayRef.h:101
Dynamic nArray referencing existing memory (const)
Definition: vctDynamicConstNArrayRef.h:89
Definition: vctDynamicConstMatrixBase.h:77
Declaration of vctDynamicConstNArrayRef.
ThisType & operator=(const ThisType &other)
Definition: vctDynamicNArrayRef.h:347
Definition: vctDynamicNArrayRefOwner.h:36
void SetRef(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION > &otherNArray)
Definition: vctDynamicNArrayRef.h:189
pointer Pointer(const nsize_type &indices)
Definition: vctDynamicNArrayBase.h:156
size_type size(void) const
Definition: vctDynamicConstVectorBase.h:164
Definition: vctForwardDeclarations.h:77
void SetRef(vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, _elementType, __dataPtrType > &matrix)
Definition: vctDynamicNArrayRef.h:334
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
ThisType & Assign(const vctDynamicConstNArrayBase< __nArrayOwnerType, value_type, DIMENSION > &other)
Definition: vctDynamicNArrayBase.h:374
NArrayOwnerType::const_reverse_iterator const_reverse_iterator
Definition: vctDynamicNArrayRef.h:103
Declaration of vctDynamicNArrayBase.
Dynamic nArray referencing existing memory.
Definition: vctDynamicNArrayRef.h:87
vctDynamicNArrayRef(pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
Definition: vctDynamicNArrayRef.h:126
const_pointer Pointer(size_type index=0) const
Definition: vctFixedSizeConstVectorBase.h:268
difference_type stride() const
Definition: vctDynamicConstVectorBase.h:169
const_pointer Pointer(index_type rowIndex, index_type colIndex) const
Definition: vctDynamicConstMatrixBase.h:306
void SetRef(vctDynamicConstMatrixBase< __ownerType, _elementType > &matrix)
Definition: vctDynamicNArrayRef.h:323
vctDynamicNArrayBase< vctDynamicNArrayRefOwner< _elementType, DIMENSION >, _elementType, DIMENSION > BaseType
Definition: vctDynamicNArrayRef.h:99
const_pointer Pointer(index_type index=0) const
Definition: vctDynamicConstVectorBase.h:221
void SetRef(pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
Definition: vctDynamicNArrayRef.h:180
Definition: vctDynamicNArrayBase.h:42
Definition: vctDynamicNArrayRef.h:92
vctDynamicNArrayRefOwner< _elementType, DIMENSION > NArrayOwnerType
Definition: vctDynamicNArrayRef.h:98
Definition: vctForwardDeclarations.h:74
size_type size(void) const
Definition: vctDynamicConstNArrayBase.h:302
Definition: vctDynamicConstVectorBase.h:77
void SetRef(vctFixedSizeConstVectorBase< __size, __stride, _elementType, __dataPtrType > &vector)
Definition: vctDynamicNArrayRef.h:314
difference_type row_stride() const
Definition: vctDynamicConstMatrixBase.h:263
const nstride_type & strides(void) const
Definition: vctDynamicConstNArrayBase.h:320
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeConstVectorBase.h:107
difference_type col_stride() const
Definition: vctDynamicConstMatrixBase.h:268
OwnerType NArray
Definition: vctDynamicConstNArrayBase.h:227
vctDynamicNArrayRef(vctFixedSizeConstVectorBase< __size, __stride, _elementType, __dataPtrType > &vector)
Definition: vctDynamicNArrayRef.h:153
value_type SetAll(const value_type value)
Definition: vctDynamicNArrayBase.h:341
difference_type stride(dimension_type dimension) const
Definition: vctDynamicConstNArrayBase.h:326
void SetRef(pointer data, const nsize_type &sizes, const nstride_type &strides)
Definition: vctDynamicNArrayRefOwner.h:67
vctDynamicNArrayRef()
Definition: vctDynamicNArrayRef.h:106
vctDynamicNArrayRef< _elementType, DIMENSION > ThisType
Definition: vctDynamicNArrayRef.h:97
NArrayOwnerType::reverse_iterator reverse_iterator
Definition: vctDynamicNArrayRef.h:102
void SliceOf(vctDynamicNArrayBase< __ownerType, _elementType, DIMENSION+1 > &otherNArray, dimension_type dimension, size_type index)
Definition: vctDynamicNArrayRef.h:248
vctDynamicNArrayRef(vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, _elementType, __dataPtrType > &matrix)
Definition: vctDynamicNArrayRef.h:171
Declaration of vctDynamicNArrayRefOwner.