ERC CISST - cisst software

vctFixedSizeVector< _elementType, _size > Class Template Reference
[Vectors]

#include <vctFixedSizeVector.h>

Inheritance diagram for vctFixedSizeVector< _elementType, _size >:

Inheritance graph
[legend]
Collaboration diagram for vctFixedSizeVector< _elementType, _size >:

Collaboration graph
[legend]
List of all members.

Detailed Description

template<class _elementType, vct::size_type _size>
class vctFixedSizeVector< _elementType, _size >

Implementation of a fixed-size vector using template metaprogramming.

The vector type is stored as a contiguous array of a fixed size (stack allocation). It provides methods for operations which are implemented using template metaprogramming. See vctFixedSizeConstVectorBase and vctFixedSizeVectorBase for more implementation details.

Parameters:
_elementType the type of an element in the vector
_size the size of the vector
Note:
We do not provide a constructor from one value_type *. You can use vctFixedSizeVectorBase::Assign(const value_type * ) for that purpose. The reason is we did not want to have too many functions in the first place.

Definition at line 53 of file vctFixedSizeVector.h.

Public Types

Public Member Functions

Public Attributes


Member Typedef Documentation

template<class _elementType, vct::size_type _size>
typedef vctFixedSizeVectorTraits<_elementType, _size, 1> vctFixedSizeVector< _elementType, _size >::VectorTraits

Type traits for the vector. Based on type of elements, size and stride, it defines array, pointer, etc. (see vctFixedSizeVectorTraits).

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Definition at line 65 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
typedef vctFixedSizeVector<value_type, _size> vctFixedSizeVector< _elementType, _size >::ThisType

Type of the vector itself.

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Reimplemented in mtsFixedSizeVector< _elementType, _size >, vctBarycentricVector< _elementType, _size >, vctQuaternion< _elementType >, vctQuaternionRotation3< _elementType >, vctRodriguezRotation3< _elementType >, vctQuaternionBase< vctFixedSizeVector< _elementType, 4 > >, vctQuaternionBase< vctFixedSizeVector< double, 4 > >, vctQuaternionRotation3< double >, vctQuaternionRotation3Base< vctFixedSizeVector< _elementType, 4 > >, vctQuaternionRotation3Base< vctFixedSizeVector< double, 4 > >, and vctRodriguezRotation3Base< vctFixedSizeVector< _elementType, 3 > >.

Definition at line 68 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
typedef vctFixedSizeVectorBase<_size, 1, _elementType, typename VectorTraits::array> vctFixedSizeVector< _elementType, _size >::BaseType

Type of the base class.

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Reimplemented in vctBarycentricVector< _elementType, _size >, vctQuaternion< _elementType >, vctQuaternionRotation3< _elementType >, vctRodriguezRotation3< _elementType >, vctQuaternionBase< vctFixedSizeVector< _elementType, 4 > >, vctQuaternionBase< vctFixedSizeVector< double, 4 > >, vctQuaternionRotation3< double >, vctQuaternionRotation3Base< vctFixedSizeVector< _elementType, 4 > >, vctQuaternionRotation3Base< vctFixedSizeVector< double, 4 > >, and vctRodriguezRotation3Base< vctFixedSizeVector< _elementType, 3 > >.

Definition at line 69 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
typedef BaseType::CopyType vctFixedSizeVector< _elementType, _size >::CopyType

The type used to create a copy.

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Definition at line 70 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
typedef class cmnTypeTraits< value_type > vctFixedSizeVector< _elementType, _size >::TypeTraits

Type traits for the elements of the vector.

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Definition at line 72 of file vctFixedSizeVector.h.


Constructor & Destructor Documentation

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector (  )  [inline]

Default constructor. Do nothing.

Definition at line 79 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  value  )  [inline, explicit]

Initialize all the elements to the given value.

Parameters:
value the value used to set all the elements of the vector

Definition at line 85 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<class __elementType, stride_type __stride, class __dataPtrType>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &  vector  )  [inline, explicit]

Initialize the elements of this vector with values from another vector. The other vector can include elements of any type, which will be converted using standard conversion to elements of this vector.

Definition at line 96 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeConstVectorRef< _elementType, _size, __stride > &  vector  )  [inline]

initializing a vector from a vector-ref of the same element type does not need to be declared "explicit".

Definition at line 106 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeVectorRef< _elementType, _size, __stride > &  vector  )  [inline]

initializing a vector from a vector-ref of the same element type does not need to be declared "explicit".

Definition at line 112 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride, class __dataPtrType>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeConstVectorBase< SIZEMINUSONE, __stride, _elementType, __dataPtrType > &  vector,
value_type  lastElement 
) [inline]

Initialize the elements of this vector by appending one value after the elements from another vector. The other vector has to have the same element type as this one.

Definition at line 123 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<class __elementType>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const __elementType *  elements  )  [inline, explicit]

Initialize this vector from a conventional C array by copying the elements (assuming input stride == 1).

Definition at line 133 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<class __vectorOwnerType>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &  vector  )  [inline]

Initialize the vector from a dynamic vector with elements of the same type.

Note:
Since the size of the dynamic vector might not match the size of the fixed size one, this constructor can throw an exception.
See also:
Corresponding Assign()

Definition at line 148 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1 
) [inline]

Constructor for a vector of size 2.

Definition at line 175 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1,
const value_type &  element2 
) [inline]

Constructor for a vector of size 3.

Definition at line 182 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1,
const value_type &  element2,
const value_type &  element3 
) [inline]

Constructor for a vector of size 4.

Definition at line 191 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type  element0,
const value_type  element1,
const value_type  element2,
const value_type  element3,
const value_type  element4,
  ... 
) [inline]

Constructor for any size greater than 4, using stdarg macros and variable number of arguments. This operation assumes that all the arguments are of type value_type, and that their number is equal to the size of the vector. The user may need to explicitly cast the parameters to value_type to avoid runtime bugs and errors. We have not checked if stdarg macros can use reference types (probably not), so unlike the other constructors, this constructor takes all arguments by value.

Note:
This constructor does not assert that the size is correct, as there is no way to know how many arguments were passed.

Definition at line 212 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeConstVectorRef< _elementType, _size, __stride > &  vector  )  [inline]

initializing a vector from a vector-ref of the same element type does not need to be declared "explicit".

Definition at line 106 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const vctFixedSizeVectorRef< _elementType, _size, __stride > &  vector  )  [inline]

initializing a vector from a vector-ref of the same element type does not need to be declared "explicit".

Definition at line 112 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1 
) [inline]

Constructor for a vector of size 2.

Definition at line 175 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1,
const value_type &  element2 
) [inline]

Constructor for a vector of size 3.

Definition at line 182 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type &  element0,
const value_type &  element1,
const value_type &  element2,
const value_type &  element3 
) [inline]

Constructor for a vector of size 4.

Definition at line 191 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
vctFixedSizeVector< _elementType, _size >::vctFixedSizeVector ( const value_type  element0,
const value_type  element1,
const value_type  element2,
const value_type  element3,
const value_type  element4,
  ... 
) [inline]

Constructor for any size greater than 4, using stdarg macros and variable number of arguments. This operation assumes that all the arguments are of type value_type, and that their number is equal to the size of the vector. The user may need to explicitly cast the parameters to value_type to avoid runtime bugs and errors. We have not checked if stdarg macros can use reference types (probably not), so unlike the other constructors, this constructor takes all arguments by value.

Note:
This constructor does not assert that the size is correct, as there is no way to know how many arguments were passed.

Definition at line 212 of file vctFixedSizeVector.h.


Member Function Documentation

template<class _elementType, vct::size_type _size>
ThisType& vctFixedSizeVector< _elementType, _size >::operator= ( const ThisType other  )  [inline]

Assignment operation between vectors of different types.

Parameters:
other The vector to be copied.

Definition at line 238 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride, class __elementType, class __dataPtrType>
ThisType& vctFixedSizeVector< _elementType, _size >::operator= ( const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &  other  )  [inline]

Assignment operation between vectors of different types.

Parameters:
other The vector to be copied.

Reimplemented from vctFixedSizeVectorBase< _size, 1, _elementType, vctFixedSizeVectorTraits< _elementType, _size, 1 >::array >.

Definition at line 243 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride>
ThisType& vctFixedSizeVector< _elementType, _size >::operator= ( const vctFixedSizeConstVectorRef< value_type, _size, __stride > &  other  )  [inline]

Assignment operation between vectors of different types.

Parameters:
other The vector to be copied.

Definition at line 248 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
template<stride_type __stride, class __elementType>
ThisType& vctFixedSizeVector< _elementType, _size >::operator= ( const vctFixedSizeConstVectorRef< __elementType, _size, __stride > &  other  )  [inline]

Assignment operation between vectors of different types.

Parameters:
other The vector to be copied.

Definition at line 253 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
ThisType& vctFixedSizeVector< _elementType, _size >::operator= ( const value_type &  value  )  [inline]

Assignement of a scalar to all elements. See also SetAll.

Definition at line 260 of file vctFixedSizeVector.h.

template<class _elementType, vct::size_type _size>
bool vctFixedSizeVector< _elementType, _size >::FromStreamRaw ( std::istream &  inputStream,
const char  delimiter = ' ' 
) [inline]

Read from an unformatted text input (e.g., one created by ToStreamRaw). Returns true if successful.

Definition at line 267 of file vctFixedSizeVector.h.

Referenced by vctFrameBase< _rotationType >::FromStreamRaw().

template<class _elementType, vct::size_type _size>
void vctFixedSizeVector< _elementType, _size >::DeSerializeRaw ( std::istream &  inputStream  )  [inline]

Binary deserialization

Definition at line 300 of file vctFixedSizeVector.h.

Referenced by vctFrameBase< _rotationType >::DeSerializeRaw(), and mtsFixedSizeVector< _elementType, _size >::DeSerializeRaw().


The documentation for this class was generated from the following file:
erc-cisst-devel<at>lists.johnshopkins.edu