cisst-saw
Loading...
Searching...
No Matches
vctDynamicConstNArrayRef< _elementType, _dimension > Class Template Reference

Dynamic nArray referencing existing memory (const). More...

#include <vctDynamicConstNArrayRef.h>

Inheritance diagram for vctDynamicConstNArrayRef< _elementType, _dimension >:
vctDynamicConstNArrayBase< vctDynamicNArrayRefOwner< _elementType, _dimension >, _elementType, _dimension >

Public Types

enum  { DIMENSION = _dimension }
typedef vctDynamicConstNArrayRef< _elementType, DIMENSIONThisType
typedef vctDynamicNArrayRefOwner< _elementType, DIMENSIONNArrayOwnerType
typedef vctDynamicConstNArrayBase< vctDynamicNArrayRefOwner< _elementType, DIMENSION >, _elementType, DIMENSIONBaseType
typedef NArrayOwnerType::iterator iterator
typedef NArrayOwnerType::const_iterator const_iterator
typedef NArrayOwnerType::reverse_iterator reverse_iterator
typedef NArrayOwnerType::const_reverse_iterator const_reverse_iterator

Public Member Functions

 VCT_CONTAINER_TRAITS_TYPEDEFS (_elementType)
 VCT_NARRAY_TRAITS_TYPEDEFS (DIMENSION)
 vctDynamicConstNArrayRef ()
 vctDynamicConstNArrayRef (const ThisType &other)
 vctDynamicConstNArrayRef (const_pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
 vctDynamicConstNArrayRef (pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
template<class __ownerType>
 vctDynamicConstNArrayRef (const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > &otherNArray)
template<class __ownerType>
 vctDynamicConstNArrayRef (const vctDynamicConstVectorBase< __ownerType, value_type > &vector)
template<size_type __size, stride_type __stride, typename __dataPtrType>
 vctDynamicConstNArrayRef (const vctFixedSizeConstVectorBase< __size, __stride, value_type, __dataPtrType > &vector)
template<class __ownerType>
 vctDynamicConstNArrayRef (const vctDynamicConstMatrixBase< __ownerType, value_type > &matrix)
template<size_type __rows, size_type __cols, stride_type __rowStride, stride_type __colStride, typename __dataPtrType>
 vctDynamicConstNArrayRef (const vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, value_type, __dataPtrType > &matrix)
void SetRef (const_pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
template<class __ownerType>
void SetRef (const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > &otherNArray)
template<class __ownerType>
void SubarrayOf (const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > &otherNArray, const nsize_type &startPosition, const nsize_type &lengths)
template<class __ownerType>
void PermutationOf (const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > &otherNArray, const ndimension_type &dimensions)
template<class __ownerType>
void SliceOf (const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION+1 > &otherNArray, dimension_type dimension, size_type index)
template<class __ownerType>
void SetRef (const vctDynamicConstVectorBase< __ownerType, value_type > &vector)
template<size_type __size, stride_type __stride, typename __dataPtrType>
void SetRef (const vctFixedSizeConstVectorBase< __size, __stride, value_type, __dataPtrType > &vector)
template<class __ownerType>
void SetRef (const vctDynamicConstMatrixBase< __ownerType, value_type > &matrix)
template<size_type __rows, size_type __cols, stride_type __rowStride, stride_type __colStride, typename __dataPtrType>
void SetRef (const vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, value_type, __dataPtrType > &matrix)

Detailed Description

template<class _elementType, vct::size_type _dimension>
class vctDynamicConstNArrayRef< _elementType, _dimension >

Dynamic nArray referencing existing memory (const).

The class vctDynamicConstNArrayRef allows to create a nArray overlaying an existing block of memory. It can be used to manipulate a container created by another toolkit (i.e. OpenGL, vtk, ...) or a cisstVector container using different parameters (different size, storage order or stride).

To setup the overlay, one can use either the constructors or the SetRef methods. When used with a cisst container, the SetRef methods can infer some of the memory layout information (pointer on first element, sizes, strides). When used to overlay existing memory referenced by a pointer, the user has to provide all the required information. In any case, the Ref object doesn't allocate nor free memory.

Finally, as this overlay is const, it can be used to make sure the referenced content is not modified.

For example to manipulate the first five elements of a nArray, one can do:

vctDynamicNArray<double, 2> wholeNArray(size_type(10, 10));
vctRandom(wholeNArray, -10.0, 10.0);
first5x5.SetRef(wholeNArray, size_type(0, 0), size_type(5, 5));
std::cout << first5x5 << " " << first5x5.SumOfElements() << std::endl;
Definition vctForwardDeclarations.h:183
Dynamic nArray referencing existing memory.
Definition vctDynamicNArrayRef.h:89
void SetRef(pointer dataPointer, const nsize_type &sizes, const nstride_type &strides)
Definition vctDynamicNArrayRef.h:180
void vctRandom(vctDynamicMatrixBase< _matrixOwnerType, _elementType > &matrix, const typename vctDynamicMatrixBase< _matrixOwnerType, _elementType >::value_type min, const typename vctDynamicMatrixBase< _matrixOwnerType, _elementType >::value_type max)
Definition vctRandomDynamicMatrix.h:47
Note
On top of the SetRef methods provided for the cisst vectors and matrices (see vctDynamicVectorRef and vctDynamicMatrixRef), the ref classes for nArrays provides the methods SubarrayOf (re-size, same dimension), PermutationOf (same dimension, same sizes but different ordering of dimensions), SliceOf (reduce dimension by 1). By combining different Refs created using a mix of these methods, one can create any desired overlay.
Make sure the underlying memory is not freed after the Ref object is created and before it is used. This would lead to faulty memory access and potential bugs.
vctDynamicConstNArrayRef only performs const operations even if it stores a non-const value_type *. It can be initialized with either value_type * or const value_type *. For a non-const Ref, see vctDynamicNArrayRef.
See also
vctDynamicNArray, vctDynamicNArrayRef
Parameters
_elementTypeType of elements referenced. Also defined as value_type.
_dimensionDimension of the const nArray ref.

Member Typedef Documentation

◆ BaseType

template<class _elementType, vct::size_type _dimension>
typedef vctDynamicConstNArrayBase<vctDynamicNArrayRefOwner<_elementType, DIMENSION>, _elementType, DIMENSION> vctDynamicConstNArrayRef< _elementType, _dimension >::BaseType

◆ const_iterator

template<class _elementType, vct::size_type _dimension>
typedef NArrayOwnerType::const_iterator vctDynamicConstNArrayRef< _elementType, _dimension >::const_iterator

◆ const_reverse_iterator

template<class _elementType, vct::size_type _dimension>
typedef NArrayOwnerType::const_reverse_iterator vctDynamicConstNArrayRef< _elementType, _dimension >::const_reverse_iterator

◆ iterator

template<class _elementType, vct::size_type _dimension>
typedef NArrayOwnerType::iterator vctDynamicConstNArrayRef< _elementType, _dimension >::iterator

◆ NArrayOwnerType

template<class _elementType, vct::size_type _dimension>
typedef vctDynamicNArrayRefOwner<_elementType, DIMENSION> vctDynamicConstNArrayRef< _elementType, _dimension >::NArrayOwnerType

◆ reverse_iterator

template<class _elementType, vct::size_type _dimension>
typedef NArrayOwnerType::reverse_iterator vctDynamicConstNArrayRef< _elementType, _dimension >::reverse_iterator

◆ ThisType

template<class _elementType, vct::size_type _dimension>
typedef vctDynamicConstNArrayRef<_elementType, DIMENSION> vctDynamicConstNArrayRef< _elementType, _dimension >::ThisType

Member Enumeration Documentation

◆ anonymous enum

template<class _elementType, vct::size_type _dimension>
anonymous enum
Enumerator
DIMENSION 

Constructor & Destructor Documentation

◆ vctDynamicConstNArrayRef() [1/9]

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( )
inline

◆ vctDynamicConstNArrayRef() [2/9]

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const ThisType & other)
inline

Copy constructor

◆ vctDynamicConstNArrayRef() [3/9]

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const_pointer dataPointer,
const nsize_type & sizes,
const nstride_type & strides )
inline

Create a reference to a memory location.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [4/9]

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( pointer dataPointer,
const nsize_type & sizes,
const nstride_type & strides )
inline

Create a reference to a memory location.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [5/9]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > & otherNArray)
inline

Create a reference to an nArray.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [6/9]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const vctDynamicConstVectorBase< __ownerType, value_type > & vector)
inline

Create a reference to a dynamic vector.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [7/9]

template<class _elementType, vct::size_type _dimension>
template<size_type __size, stride_type __stride, typename __dataPtrType>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const vctFixedSizeConstVectorBase< __size, __stride, value_type, __dataPtrType > & vector)
inline

Create a reference to a fixed-size vector.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [8/9]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const vctDynamicConstMatrixBase< __ownerType, value_type > & matrix)
inline

Create a reference to a dynamic matrix.

Note
see corresponding SetRef method below

◆ vctDynamicConstNArrayRef() [9/9]

template<class _elementType, vct::size_type _dimension>
template<size_type __rows, size_type __cols, stride_type __rowStride, stride_type __colStride, typename __dataPtrType>
vctDynamicConstNArrayRef< _elementType, _dimension >::vctDynamicConstNArrayRef ( const vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, value_type, __dataPtrType > & matrix)
inline

Create a reference to a fixed-size matrix.

Note
see corresponding SetRef method below

Member Function Documentation

◆ PermutationOf()

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::PermutationOf ( const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > & otherNArray,
const ndimension_type & dimensions )
inline

Set a reference to an nArray with a permutation of its strides.

Parameters
otherNArraythe nArray over which to set this reference
dimensionsa sequence of dimension numbers representing the permuted order of strides
Note
Preserves the number of dimensions.

◆ SetRef() [1/6]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const vctDynamicConstMatrixBase< __ownerType, value_type > & matrix)
inline

Set a reference to a dynamic matrix. The reference will have identical sizes and strides as the input matrix.

◆ SetRef() [2/6]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > & otherNArray)
inline

Set a reference to an nArray. The reference will have identical dimensions, sizes and strides as the input nArray.

◆ SetRef() [3/6]

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const vctDynamicConstVectorBase< __ownerType, value_type > & vector)
inline

Set a reference to a dynamic vector. The reference will have identical size and stride as the input vector.

◆ SetRef() [4/6]

template<class _elementType, vct::size_type _dimension>
template<size_type __rows, size_type __cols, stride_type __rowStride, stride_type __colStride, typename __dataPtrType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, value_type, __dataPtrType > & matrix)
inline

Set a reference to a fixed-size matrix. The reference will have identical sizes and strides as the input matrix.

◆ SetRef() [5/6]

template<class _elementType, vct::size_type _dimension>
template<size_type __size, stride_type __stride, typename __dataPtrType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const vctFixedSizeConstVectorBase< __size, __stride, value_type, __dataPtrType > & vector)
inline

Set a reference to a fixed-size vector. The reference will have identical size and stride as the input vector.

◆ SetRef() [6/6]

template<class _elementType, vct::size_type _dimension>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SetRef ( const_pointer dataPointer,
const nsize_type & sizes,
const nstride_type & strides )
inline

Set a reference to a memory location. The user should specify all the parameters of the referenced memory, including a start memory address.

◆ SliceOf()

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SliceOf ( const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION+1 > & otherNArray,
dimension_type dimension,
size_type index )
inline

Set a reference to an (n-1)-dimension slice of an n-dimension nArray.

Parameters
otherNArraythe nArray over which to set this reference
dimensionthe dimension number of the direction by which to reduce
slicethe index number in the dimension specified by which to set the reference
Note
The number of dimensions is reduced by one.

◆ SubarrayOf()

template<class _elementType, vct::size_type _dimension>
template<class __ownerType>
void vctDynamicConstNArrayRef< _elementType, _dimension >::SubarrayOf ( const vctDynamicConstNArrayBase< __ownerType, value_type, DIMENSION > & otherNArray,
const nsize_type & startPosition,
const nsize_type & lengths )
inline

Set a reference to a subarray of an nArray.

Parameters
otherNArraythe nArray over which to set this reference
startPositionvector of indices of the element position where the reference will start
lengthsthe number of elements to reference in each dimension
Note
Preserves the number of dimensions.

◆ VCT_CONTAINER_TRAITS_TYPEDEFS()

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::VCT_CONTAINER_TRAITS_TYPEDEFS ( _elementType )

◆ VCT_NARRAY_TRAITS_TYPEDEFS()

template<class _elementType, vct::size_type _dimension>
vctDynamicConstNArrayRef< _elementType, _dimension >::VCT_NARRAY_TRAITS_TYPEDEFS ( DIMENSION )

The documentation for this class was generated from the following file: