Main MRPT website > C++ reference
MRPT logo
Public Types | Public Member Functions | Protected Attributes

Map< PlainObjectType, MapOptions, StrideType > Class Template Reference


Detailed Description

template<typename PlainObjectType, int MapOptions, typename StrideType>
class Map< PlainObjectType, MapOptions, StrideType >

A matrix or vector expression mapping an existing array of data.

Parameters:
PlainObjectTypethe equivalent matrix type of the mapped data
MapOptionsspecifies whether the pointer is Aligned, or Unaligned. The default is Unaligned.
StrideTypeoptionnally specifies strides. By default, Map assumes the memory layout of an ordinary, contiguous array. This can be overridden by specifying strides. The type passed here must be a specialization of the Stride template, see examples below.

This class represents a matrix or vector expression mapping an existing array of data. It can be used to let Eigen interface without any overhead with non-Eigen data structures, such as plain C arrays or structures from other libraries. By default, it assumes that the data is laid out contiguously in memory. You can however override this by explicitly specifying inner and outer strides.

Here's an example of simply mapping a contiguous array as a column-major matrix:

Output:

If you need to map non-contiguous arrays, you can do so by specifying strides:

Here's an example of mapping an array as a vector, specifying an inner stride, that is, the pointer increment between two consecutive coefficients. Here, we're specifying the inner stride as a compile-time fixed value.

Output:

Here's an example of mapping an array while specifying an outer stride. Here, since we're mapping as a column-major matrix, 'outer stride' means the pointer increment between two consecutive columns. Here, we're specifying the outer stride as a runtime parameter. Note that here OuterStride<> is a short version of OuterStride<Dynamic> because the default template parameter of OuterStride is Dynamic

Output:

For more details and for an example of specifying both an inner and an outer stride, see class Stride.

Tip: to change the array of data mapped by a Map object, you can use the C++ placement new syntax:

Example:

Output:

This class is the return type of Matrix::Map() but can also be used directly.

See also:
Matrix::Map()

Definition at line 117 of file Map.h.

#include <src/Core/Map.h>

Inheritance diagram for Map< PlainObjectType, MapOptions, StrideType >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef MapBase< MapBase
typedef Base::PointerType PointerType

Public Member Functions

Index innerStride () const
Index outerStride () const
 Map (PointerType data, const StrideType &stride=StrideType())
 Constructor in the fixed-size case.
 Map (PointerType data, Index size, const StrideType &stride=StrideType())
 Constructor in the dynamic-size vector case.
 Map (PointerType data, Index rows, Index cols, const StrideType &stride=StrideType())
 Constructor in the dynamic-size matrix case.

Protected Attributes

StrideType m_stride

Member Typedef Documentation

template<typename PlainObjectType, int MapOptions, typename StrideType>
typedef MapBase<Map> Map< PlainObjectType, MapOptions, StrideType >::Base

Definition at line 122 of file Map.h.

template<typename PlainObjectType, int MapOptions, typename StrideType>
typedef Base::PointerType Map< PlainObjectType, MapOptions, StrideType >::PointerType

Definition at line 126 of file Map.h.


Constructor & Destructor Documentation

template<typename PlainObjectType, int MapOptions, typename StrideType>
Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerType  data,
const StrideType &  stride = StrideType() 
) [inline]

Constructor in the fixed-size case.

Parameters:
datapointer to the array to map
strideoptional Stride object, passing the strides.

Definition at line 147 of file Map.h.

template<typename PlainObjectType, int MapOptions, typename StrideType>
Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerType  data,
Index  size,
const StrideType &  stride = StrideType() 
) [inline]

Constructor in the dynamic-size vector case.

Parameters:
datapointer to the array to map
sizethe size of the vector expression
strideoptional Stride object, passing the strides.

Definition at line 159 of file Map.h.

template<typename PlainObjectType, int MapOptions, typename StrideType>
Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerType  data,
Index  rows,
Index  cols,
const StrideType &  stride = StrideType() 
) [inline]

Constructor in the dynamic-size matrix case.

Parameters:
datapointer to the array to map
rowsthe number of rows of the matrix expression
colsthe number of columns of the matrix expression
strideoptional Stride object, passing the strides.

Definition at line 172 of file Map.h.


Member Function Documentation

template<typename PlainObjectType, int MapOptions, typename StrideType>
Index Map< PlainObjectType, MapOptions, StrideType >::innerStride (  ) const [inline]

Definition at line 129 of file Map.h.

template<typename PlainObjectType, int MapOptions, typename StrideType>
Index Map< PlainObjectType, MapOptions, StrideType >::outerStride (  ) const [inline]

Definition at line 134 of file Map.h.

References RowMajorBit, and mrpt::math::size().


Member Data Documentation

template<typename PlainObjectType, int MapOptions, typename StrideType>
StrideType Map< PlainObjectType, MapOptions, StrideType >::m_stride [protected]

Definition at line 182 of file Map.h.




Page generated by Doxygen 1.7.2 for MRPT 0.9.4 SVN: at Mon Jan 10 22:30:30 UTC 2011