OpenGM  2.3.x
Discrete Graphical Model Library
Public Types | Public Member Functions | List of all members
marray::View< T, isConst, A > Class Template Reference

Array-Interface to an interval of memory. More...

#include <marray.hxx>

+ Inheritance diagram for marray::View< T, isConst, A >:
+ Collaboration diagram for marray::View< T, isConst, A >:

Public Types

typedef T value_type
 
typedef T ValueType
 
typedef marray_detail::IfBool< isConst, const T *, T * >::type pointer
 
typedef const T * const_pointer
 
typedef marray_detail::IfBool< isConst, const T &, T & >::type reference
 
typedef const T & const_reference
 
typedef Iterator< T, isConst, A > iterator
 
typedef Iterator< T, true, A > const_iterator
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
typedef ViewExpression< View< T, isConst, A >, T > base
 
typedef A::template rebind< value_type >::other allocator_type
 
- Public Types inherited from marray::ViewExpression< View< T, isConst, A >, T >
typedef View< T, isConst, A > expression_type
 
typedef T value_type
 

Public Member Functions

 View (const allocator_type &=allocator_type())
 Empty constructor. More...
 
 View (pointer, const allocator_type &=allocator_type())
 Construct View from a scalar. More...
 
 View (const View< T, false, A > &)
 Construct View from a View on mutable data. More...
 
template<class ShapeIterator >
 View (ShapeIterator, ShapeIterator, pointer, const CoordinateOrder &=defaultOrder, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct unstrided View. More...
 
template<class ShapeIterator , class StrideIterator >
 View (ShapeIterator, ShapeIterator, StrideIterator, pointer, const CoordinateOrder &, const allocator_type &=allocator_type())
 Construct strided View. More...
 
View< T, isConst, A > & operator= (const T &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const View< T, true, A > &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const View< T, false, A > &)
 Assignment. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
View< T, isConst, A > & operator= (const View< TLocal, isConstLocal, ALocal > &)
 Assignment. More...
 
template<class E , class Te >
View< T, isConst, A > & operator= (const ViewExpression< E, Te > &)
 
void assign (const allocator_type &=allocator_type())
 Clear View. More...
 
template<class ShapeIterator >
void assign (ShapeIterator, ShapeIterator, pointer, const CoordinateOrder &=defaultOrder, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Initialize unstrided View. More...
 
template<class ShapeIterator , class StrideIterator >
void assign (ShapeIterator, ShapeIterator, StrideIterator, pointer, const CoordinateOrder &, const allocator_type &=allocator_type())
 Initialize strided View. More...
 
const size_t dimension () const
 Get the dimension. More...
 
const size_t size () const
 Get the number of data items. More...
 
const size_t shape (const size_t) const
 Get the shape in one dimension. More...
 
const size_tshapeBegin () const
 Get a constant iterator to the beginning of the shape vector. More...
 
const size_tshapeEnd () const
 Get a constant iterator to the end of the shape vector. More...
 
const size_t strides (const size_t) const
 Get the strides in one dimension. More...
 
const size_tstridesBegin () const
 Get a constant iterator to the beginning of the strides vector. More...
 
const size_tstridesEnd () const
 Get a constant iterator to the end of the strides vector. More...
 
const CoordinateOrdercoordinateOrder () const
 Get the coordinate order used for scalar indexing and iterators. More...
 
const bool isSimple () const
 Determine whether the shape strides equal the strides of the View. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
bool overlaps (const View< TLocal, isConstLocal, ALocal > &) const
 Check whether two Views overlap. More...
 
template<class U >
reference operator() (U)
 Reference data. More...
 
template<class U >
reference operator() (U) const
 Reference data. More...
 
reference operator() (const size_t, const size_t)
 Reference data in a 2-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t) const
 Reference data in a 2-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t)
 Reference data in a 3-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t) const
 Reference data in a 3-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t)
 Reference data in a 4-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 4-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t)
 Reference data in a 5-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 5-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t)
 Reference data in a 10-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 10-dimensional View by coordinates. More...
 
template<class BaseIterator , class ShapeIterator >
void view (BaseIterator, ShapeIterator, View< T, isConst, A > &) const
 Get a sub-view with the same coordinate order. More...
 
template<class BaseIterator , class ShapeIterator >
void view (BaseIterator, ShapeIterator, const CoordinateOrder &, View< T, isConst, A > &) const
 Get a sub-view. More...
 
template<class BaseIterator , class ShapeIterator >
View< T, isConst, A > view (BaseIterator, ShapeIterator) const
 Get a sub-view with the same coordinate order. More...
 
template<class BaseIterator , class ShapeIterator >
View< T, isConst, A > view (BaseIterator, ShapeIterator, const CoordinateOrder &) const
 Get a sub-view. More...
 
template<class BaseIterator , class ShapeIterator >
void constView (BaseIterator, ShapeIterator, View< T, true, A > &) const
 Get a sub-view to constant data with the same coordinate order. More...
 
template<class BaseIterator , class ShapeIterator >
void constView (BaseIterator, ShapeIterator, const CoordinateOrder &, View< T, true, A > &) const
 Get a sub-view to constant data. More...
 
template<class BaseIterator , class ShapeIterator >
View< T, true, A > constView (BaseIterator, ShapeIterator) const
 Get a sub-view to constant data with the same coordinate order. More...
 
template<class BaseIterator , class ShapeIterator >
View< T, true, A > constView (BaseIterator, ShapeIterator, const CoordinateOrder &) const
 Get a sub-view to constant data. More...
 
iterator begin ()
 Get an iterator to the beginning. More...
 
iterator end ()
 Get the end-iterator. More...
 
const_iterator begin () const
 Get an iterator to the beginning. More...
 
const_iterator end () const
 Get the end-iterator. More...
 
reverse_iterator rbegin ()
 Get a reserve iterator to the beginning. More...
 
reverse_iterator rend ()
 Get the reverse end-iterator. More...
 
const_reverse_iterator rbegin () const
 Get a reserve iterator to the beginning. More...
 
const_reverse_iterator rend () const
 Get the reverse end-iterator. More...
 
template<class ShapeIterator >
void reshape (ShapeIterator, ShapeIterator)
 Reshape the View. More...
 
template<class CoordinateIterator >
void permute (CoordinateIterator)
 Permute dimensions. More...
 
void transpose (const size_t, const size_t)
 Exchange two dimensions. More...
 
void transpose ()
 Reverse dimensions. More...
 
void shift (const int)
 Cycle shift dimensions. More...
 
void squeeze ()
 Remove singleton dimensions by setting their coordinates to zero. More...
 
template<class ShapeIterator >
View< T, isConst, A > reshapedView (ShapeIterator, ShapeIterator) const
 Get a reshaped View. More...
 
template<class CoordinateIterator >
View< T, isConst, A > permutedView (CoordinateIterator) const
 Get a View with permuted dimensions. More...
 
View< T, isConst, A > transposedView (const size_t, const size_t) const
 Get a View with two dimensions exchanged. More...
 
View< T, isConst, A > transposedView () const
 Get a View with dimensions reversed. More...
 
View< T, isConst, A > shiftedView (const int) const
 Get a View which dimensions cycle shifted. More...
 
View< T, isConst, A > boundView (const size_t, const size_t=0) const
 Get a View where one coordinate is bound to a value. More...
 
View< T, isConst, A > squeezedView () const
 Get a View where all singleton dimensions have been removed by setting their coordinates to zero. More...
 
template<class CoordinateIterator >
void coordinatesToIndex (CoordinateIterator, size_t &) const
 Compute the index that corresponds to a sequence of coordinates. More...
 
template<class CoordinateIterator >
void coordinatesToOffset (CoordinateIterator, size_t &) const
 Compute the offset that corresponds to a sequence of coordinates. More...
 
template<class CoordinateIterator >
void indexToCoordinates (size_t, CoordinateIterator) const
 Compute the coordinate sequence that corresponds to an index. More...
 
void indexToOffset (size_t, size_t &) const
 Compute the offset that corresponds to an index. More...
 
std::string asString (const StringStyle &=MatrixStyle) const
 Output as string. More...
 
- Public Member Functions inherited from marray::ViewExpression< View< T, isConst, A >, T >
const size_t dimension () const
 
const size_t size () const
 
const size_t shape (const size_t j) const
 
const size_tshapeBegin () const
 
const size_tshapeEnd () const
 
bool overlaps (const View< Tv, isConst, A > &v) const
 
const CoordinateOrdercoordinateOrder () const
 
const bool isSimple () const
 
const T & operator() (Accessor it) const
 
const T & operator() (const size_t c0, const size_t c1) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2, const size_t c3) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2, const size_t c3, const size_t c4) const
 
const T & operator[] (const size_t offset) const
 
 operator View< T, isConst, A > & ()
 
 operator View< T, isConst, A >const & () const
 

Detailed Description

template<class T, bool isConst, class A>
class marray::View< T, isConst, A >

Array-Interface to an interval of memory.

A view makes a subset of memory look as if it was stored in an Marray. With the help of a view, data in a subset of memory can be accessed and manipulated conveniently. In contrast to arrays which allocate and de-allocate their own memory, views only reference memory that has been allocated by other means. Perhaps the simplest and most important use of views is to read and manipulate sub-arrays.

Notes on arithmetic operators of View:

Definition at line 44 of file marray.hxx.

Member Typedef Documentation

template<class T, bool isConst, class A>
typedef A::template rebind<value_type>::other marray::View< T, isConst, A >::allocator_type

Definition at line 220 of file marray.hxx.

template<class T, bool isConst, class A>
typedef ViewExpression<View<T, isConst, A>, T> marray::View< T, isConst, A >::base

Definition at line 219 of file marray.hxx.

template<class T, bool isConst, class A>
typedef Iterator<T, true, A> marray::View< T, isConst, A >::const_iterator

Definition at line 216 of file marray.hxx.

template<class T, bool isConst, class A>
typedef const T* marray::View< T, isConst, A >::const_pointer

Definition at line 212 of file marray.hxx.

template<class T, bool isConst, class A>
typedef const T& marray::View< T, isConst, A >::const_reference

Definition at line 214 of file marray.hxx.

template<class T, bool isConst, class A>
typedef std::reverse_iterator<const_iterator> marray::View< T, isConst, A >::const_reverse_iterator

Definition at line 218 of file marray.hxx.

template<class T, bool isConst, class A>
typedef Iterator<T, isConst, A> marray::View< T, isConst, A >::iterator

Definition at line 215 of file marray.hxx.

template<class T, bool isConst, class A>
typedef marray_detail::IfBool<isConst, const T*, T*>::type marray::View< T, isConst, A >::pointer

Definition at line 211 of file marray.hxx.

template<class T, bool isConst, class A>
typedef marray_detail::IfBool<isConst, const T&, T&>::type marray::View< T, isConst, A >::reference

Definition at line 213 of file marray.hxx.

template<class T, bool isConst, class A>
typedef std::reverse_iterator<iterator> marray::View< T, isConst, A >::reverse_iterator

Definition at line 217 of file marray.hxx.

template<class T, bool isConst, class A>
typedef T marray::View< T, isConst, A >::value_type

Definition at line 209 of file marray.hxx.

template<class T, bool isConst, class A>
typedef T marray::View< T, isConst, A >::ValueType

Definition at line 210 of file marray.hxx.

Constructor & Destructor Documentation

template<class T , bool isConst, class A >
marray::View< T, isConst, A >::View ( const allocator_type allocator = allocator_type())
inline

Empty constructor.

The empty constructor sets the data pointer to 0. It does not allocate memory for a scalar.

Parameters
allocatorAllocator.

Definition at line 922 of file marray.hxx.

template<class T , bool isConst, class A >
marray::View< T, isConst, A >::View ( pointer  data,
const allocator_type allocator = allocator_type() 
)
inline

Construct View from a scalar.

Parameters
dataPointer to data.
allocatorAllocator.

Definition at line 953 of file marray.hxx.

template<class T, bool isConst, class A>
marray::View< T, isConst, A >::View ( const View< T, false, A > &  in)
inline

Construct View from a View on mutable data.

Parameters
inView on mutable data.

Definition at line 970 of file marray.hxx.

template<class T , bool isConst, class A >
template<class ShapeIterator >
marray::View< T, isConst, A >::View ( ShapeIterator  begin,
ShapeIterator  end,
pointer  data,
const CoordinateOrder externalCoordinateOrder = defaultOrder,
const CoordinateOrder internalCoordinateOrder = defaultOrder,
const allocator_type allocator = allocator_type() 
)
inline

Construct unstrided View.

Parameters
beginIterator to the beginning of a sequence that defines the shape.
endIterator to the end of this sequence.
dataPointer to data.
externalCoordinateOrderFlag specifying the order of coordinates based on which the strides are computed.
internalCoordinateOrderFlag specifying the order of coordinates used for scalar indexing and iterators.
allocatorAllocator.

Definition at line 996 of file marray.hxx.

template<class T , bool isConst, class A >
template<class ShapeIterator , class StrideIterator >
marray::View< T, isConst, A >::View ( ShapeIterator  begin,
ShapeIterator  end,
StrideIterator  it,
pointer  data,
const CoordinateOrder internalCoordinateOrder,
const allocator_type allocator = allocator_type() 
)
inline

Construct strided View.

Parameters
beginIterator to the beginning of a sequence that defines the shape.
endIterator to the end of this sequence.
itIterator to the beginning of a sequence that defines the strides.
dataPointer to data.
internalCoordinateOrderFlag specifying the order of coordinates used for scalar indexing and iterators.
allocatorAllocator.

Definition at line 1027 of file marray.hxx.

Member Function Documentation

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::assign ( const allocator_type allocator = allocator_type())
inline

Clear View.

Leaves the View in the same state as if the empty constructor had been called.

See also
View()

Definition at line 1105 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
template<class ShapeIterator >
void marray::View< T, isConst, A >::assign ( ShapeIterator  begin,
ShapeIterator  end,
pointer  data,
const CoordinateOrder externalCoordinateOrder = defaultOrder,
const CoordinateOrder internalCoordinateOrder = defaultOrder,
const allocator_type allocator = allocator_type() 
)
inline

Initialize unstrided View.

Parameters
beginIterator to the beginning of a sequence that defines the shape.
endIterator to the end of this sequence.
dataPointer to data.
externalCoordinateOrderFlag specifying the order of coordinates based on which the strides are computed.
internalCoordinateOrderFlag specifying the order of coordinates used for scalar indexing and iterators.
allocatorAllocator.

Definition at line 1130 of file marray.hxx.

template<class T , bool isConst, class A >
template<class ShapeIterator , class StrideIterator >
void marray::View< T, isConst, A >::assign ( ShapeIterator  begin,
ShapeIterator  end,
StrideIterator  it,
pointer  data,
const CoordinateOrder internalCoordinateOrder,
const allocator_type allocator = allocator_type() 
)
inline

Initialize strided View.

Parameters
beginIterator to the beginning of a sequence that defines the shape.
endIterator to the end of this sequence.
itIterator to the beginning of a sequence that defines the strides.
dataPointer to data.
internalCoordinateOrderFlag specifying the order of coordinates used for scalar indexing and iterators.
allocatorAllocator.

Definition at line 1164 of file marray.hxx.

template<class T , bool isConst, class A >
std::string marray::View< T, isConst, A >::asString ( const StringStyle style = MatrixStyle) const

Output as string.

Definition at line 2960 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::iterator marray::View< T, isConst, A >::begin ( )
inline

Get an iterator to the beginning.

Returns
Iterator.
See also
end()

Definition at line 2714 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
View< T, isConst, A >::const_iterator marray::View< T, isConst, A >::begin ( ) const
inline

Get an iterator to the beginning.

Returns
Iterator.
See also
end()

Definition at line 2740 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A > marray::View< T, isConst, A >::boundView ( const size_t  dimension,
const size_t  value = 0 
) const

Get a View where one coordinate is bound to a value.

Binds one coordinate to a certain value. This reduces the dimension by 1.

Parameters
dimensionDimension of the coordinate to bind.
valueValue to assign to the coordinate.
Returns
The bound view.
See also
squeeze(), squeezeView()

Definition at line 2374 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
void marray::View< T, isConst, A >::constView ( BaseIterator  bit,
ShapeIterator  sit,
View< T, true, A > &  out 
) const
inline

Get a sub-view to constant data with the same coordinate order.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
outSub-View (output).

Definition at line 2084 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
void marray::View< T, isConst, A >::constView ( BaseIterator  bit,
ShapeIterator  sit,
const CoordinateOrder internalCoordinateOrder,
View< T, true, A > &  out 
) const
inline

Get a sub-view to constant data.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
internalCoordinateOrderFlag to set the coordinate order for scalar indexing and iterators of the sub-view.
outSub-View (output).

Definition at line 2107 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
View< T, true, A > marray::View< T, isConst, A >::constView ( BaseIterator  bit,
ShapeIterator  sit 
) const
inline

Get a sub-view to constant data with the same coordinate order.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
Returns
Sub-View.

Definition at line 2136 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
View< T, true, A > marray::View< T, isConst, A >::constView ( BaseIterator  bit,
ShapeIterator  sit,
const CoordinateOrder internalCoordinateOrder 
) const
inline

Get a sub-view to constant data.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
internalCoordinateOrderFlag to set the coordinate order for scalar indexing and iterators of the sub-view.
Returns
Sub-View.

Definition at line 2160 of file marray.hxx.

template<class T , bool isConst, class A >
const CoordinateOrder & marray::View< T, isConst, A >::coordinateOrder ( ) const
inline

Get the coordinate order used for scalar indexing and iterators.

Returns
CoordinateOrder. enum: FirstMajorOrder, LastMajorOrder

Definition at line 1815 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
template<class CoordinateIterator >
void marray::View< T, isConst, A >::coordinatesToIndex ( CoordinateIterator  it,
size_t out 
) const
inline

Compute the index that corresponds to a sequence of coordinates.

Parameters
itAn iterator to the beginning of the coordinate sequence.
outIndex (output)
See also
coordinatesToOffset(), indexToCoordinates(), and indexToOffset()

Definition at line 766 of file marray.hxx.

template<class T , bool isConst, class A >
template<class CoordinateIterator >
void marray::View< T, isConst, A >::coordinatesToOffset ( CoordinateIterator  it,
size_t out 
) const
inline

Compute the offset that corresponds to a sequence of coordinates.

Parameters
itAn iterator to the beginning of the coordinate sequence.
outIndex (output)
See also
coordinatesToIndex(), indexToCoordinates(), and indexToOffset()

Definition at line 808 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t marray::View< T, isConst, A >::dimension ( ) const
inline

Get the dimension.

Not well-defined if the data pointer is 0.

Returns
Dimension.

Definition at line 1711 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
View< T, isConst, A >::iterator marray::View< T, isConst, A >::end ( )
inline

Get the end-iterator.

Returns
Iterator.
See also
begin()

Definition at line 2727 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
View< T, isConst, A >::const_iterator marray::View< T, isConst, A >::end ( ) const
inline

Get the end-iterator.

Returns
Iterator.
See also
begin()

Definition at line 2754 of file marray.hxx.

template<class T , bool isConst, class A >
template<class CoordinateIterator >
void marray::View< T, isConst, A >::indexToCoordinates ( size_t  index,
CoordinateIterator  outit 
) const
inline

Compute the coordinate sequence that corresponds to an index.

Parameters
indexIndex
outitAn iterator into a container into which the coordinate sequence is to be written (output).
See also
coordinatesToIndex(), coordinatesToOffset(), and indexToOffset()

Definition at line 832 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::indexToOffset ( size_t  index,
size_t out 
) const
inline

Compute the offset that corresponds to an index.

Parameters
indexIndex.
outOffset (output).
See also
coordinatesToIndex(), coordinatesToOffset(), and indexToCoordinates()

Definition at line 872 of file marray.hxx.

template<class T , bool isConst, class A >
const bool marray::View< T, isConst, A >::isSimple ( ) const
inline

Determine whether the shape strides equal the strides of the View.

Returns
bool.

Definition at line 1827 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
template<class U >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( u)
inline

Reference data.

Parameters
uIf u is an integer type, scalar indexing is performed. Otherwise, it is assumed that u is an iterator to the beginning of a coordinate sequence.
Returns
Reference to the entry at u.

Definition at line 1245 of file marray.hxx.

template<class T , bool isConst, class A >
template<class U >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( u) const
inline

Reference data.

Parameters
uIf u is an integer type, scalar indexing is performed. Otherwise, it is assumed that u is an iterator to the beginning of a coordinate sequence.
Returns
Reference to the entry at u.

Definition at line 1263 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1 
)
inline

Reference data in a 2-dimensional View by coordinates.

This function issues a runtime error if the View is not 2-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.

Definition at line 1283 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1 
) const
inline

Reference data in a 2-dimensional View by coordinates.

This function issues a runtime error if the View is not 2-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.

Definition at line 1305 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2 
)
inline

Reference data in a 3-dimensional View by coordinates.

This function issues a runtime error if the View is not 3-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.

Definition at line 1328 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2 
) const
inline

Reference data in a 3-dimensional View by coordinates.

This function issues a runtime error if the View is not 3-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.

Definition at line 1353 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3 
)
inline

Reference data in a 4-dimensional View by coordinates.

This function issues a runtime error if the View is not 4-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.

Definition at line 1379 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3 
) const
inline

Reference data in a 4-dimensional View by coordinates.

This function issues a runtime error if the View is not 4-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.

Definition at line 1407 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3,
const size_t  c4 
)
inline

Reference data in a 5-dimensional View by coordinates.

This function issues a runtime error if the View is not 5-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.
c45th coordinate.

Definition at line 1436 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3,
const size_t  c4 
) const
inline

Reference data in a 5-dimensional View by coordinates.

This function issues a runtime error if the View is not 5-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.
c45th coordinate.

Definition at line 1466 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3,
const size_t  c4,
const size_t  c5,
const size_t  c6,
const size_t  c7,
const size_t  c8,
const size_t  c9 
)
inline

Reference data in a 10-dimensional View by coordinates.

This function issues a runtime error if the View is not 5-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.
c45th coordinate.
c56th coordinate.
c67th coordinate.
c78th coordinate.
c89th coordinate.
c910th coordinate.

Definition at line 1502 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reference marray::View< T, isConst, A >::operator() ( const size_t  c0,
const size_t  c1,
const size_t  c2,
const size_t  c3,
const size_t  c4,
const size_t  c5,
const size_t  c6,
const size_t  c7,
const size_t  c8,
const size_t  c9 
) const
inline

Reference data in a 10-dimensional View by coordinates.

This function issues a runtime error if the View is not 5-dimensional.

Parameters
c01st coordinate.
c12nd coordinate.
c23rd coordinate.
c34th coordinate.
c45th coordinate.
c56th coordinate.
c67th coordinate.
c78th coordinate.
c89th coordinate.
c910th coordinate.

Definition at line 1545 of file marray.hxx.

template<class T, bool isConst, class A >
View< T, isConst, A > & marray::View< T, isConst, A >::operator= ( const T &  value)
inline

Assignment.

Parameters
valueValue.

All entries are set to value.

Definition at line 1925 of file marray.hxx.

template<class T, bool isConst, class A>
View< T, isConst, A > & marray::View< T, isConst, A >::operator= ( const View< T, true, A > &  in)
inline

Assignment.

operator= (the assignment operator) has a non-trivial behavior. In most cases, it will work as most programmers will expect. Here's a complete description of the semantics of to.operator=(from) or equivalently, to = from.

Consider the following cases: (1) 'to' is mutable (isConst == false) (a) 'from' is mutable (isConst == false) (i) 'to' is initialized (data_ != 0) (ii) 'to' is un-initialized (data_ == 0) (b) 'from' is constant (isConst == true) (2) 'to' is constant (isConst == true)

(i) The operator attempts to copy the data under view 'b' to the memory under view 'a'. This works if both views have the same size, regardless of their dimension and shape. Equality of sizes is checked by an assertion.

(ii) Unless &a == &b (self-assignment), the operator copies the (data) pointer of view 'b' to view 'a', without copying the data itself. In addition, all the properties of view 'b' are copied to view 'a'.

(b) The operator attempts to copy the data under view 'b' to the memory under view 'a'. This works if both views have the same size, regardless of their dimension and shape. Equality of sizes is checked by an assertion. If 'a' is un-initialized the assertion fails (because the size of a will be zero). Unlike in (ii), the pointer is not copied in this case. Thus, a conversion from mutable to const is prevented.

(2) Unless &a == &b (self-assignment), the operator copies the (data) pointer of view 'b' to view 'a', without copying the data itself. In addition, all the properties of view 'b' are copied to view 'a'. Note that changing the data under a constant view would be counter-intuitive.

Definition at line 1875 of file marray.hxx.

template<class T, bool isConst, class A>
View< T, isConst, A > & marray::View< T, isConst, A >::operator= ( const View< T, false, A > &  in)
inline

Assignment.

Definition at line 1890 of file marray.hxx.

template<class T , bool isConst, class A >
template<class TLocal , bool isConstLocal, class ALocal >
View< T, isConst, A > & marray::View< T, isConst, A >::operator= ( const View< TLocal, isConstLocal, ALocal > &  in)
inline

Assignment.

Definition at line 1906 of file marray.hxx.

template<class T , bool isConst, class A >
template<class E , class Te>
View< T, isConst, A > & marray::View< T, isConst, A >::operator= ( const ViewExpression< E, Te > &  expression)
inline

Definition at line 1967 of file marray.hxx.

template<class T , bool isConst, class A >
template<class TLocal , bool isConstLocal, class ALocal >
bool marray::View< T, isConst, A >::overlaps ( const View< TLocal, isConstLocal, ALocal > &  v) const
inline

Check whether two Views overlap.

This function returns true if two memory intervals overlap: (1) the interval between the first and the last element of the object whose member function overlaps() is called. (2) the interval between the first and the last element of v.

Note that this not necessarily implies the existence of an element that is addressed by both v and the current object. v could for instance address all odd elements in a vector while the current object addresses all even elements.

Parameters
vA view to compare with *this.
Returns
bool.

Definition at line 2930 of file marray.hxx.

template<class T , bool isConst, class A >
template<class CoordinateIterator >
void marray::View< T, isConst, A >::permute ( CoordinateIterator  begin)

Permute dimensions.

Parameters
beginIterator to the beginning of a sequence which has to contain the integers 0, ..., dimension()-1 in any order. Otherwise, a runtime error is thrown.
See also
permutedView(), transpose(), transposedView(), shift(), shiftedView()

Definition at line 2493 of file marray.hxx.

template<class T , bool isConst, class A >
template<class CoordinateIterator >
View< T, isConst, A > marray::View< T, isConst, A >::permutedView ( CoordinateIterator  begin) const
inline

Get a View with permuted dimensions.

Parameters
beginIterator to the beginning of a sequence which has to contain the integers 0, ..., dimension()-1 in any order. Otherwise, a runtime error is thrown.
Returns
Permuted View.
See also
permute(), transpose(), transposedView(), shift(), shiftedView()

Definition at line 2540 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reverse_iterator marray::View< T, isConst, A >::rbegin ( )
inline

Get a reserve iterator to the beginning.

Returns
Iterator.
See also
rend()

Definition at line 2767 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::const_reverse_iterator marray::View< T, isConst, A >::rbegin ( ) const
inline

Get a reserve iterator to the beginning.

Returns
Iterator.
See also
rend()

Definition at line 2791 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::reverse_iterator marray::View< T, isConst, A >::rend ( )
inline

Get the reverse end-iterator.

Returns
Iterator.
See also
rbegin()

Definition at line 2779 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A >::const_reverse_iterator marray::View< T, isConst, A >::rend ( ) const
inline

Get the reverse end-iterator.

Returns
Iterator.
See also
rbegin()

Definition at line 2803 of file marray.hxx.

template<class T , bool isConst, class A >
template<class ShapeIterator >
void marray::View< T, isConst, A >::reshape ( ShapeIterator  begin,
ShapeIterator  end 
)
inline

Reshape the View.

Two conditions have to be fulfilled in order for reshape to work:

  • The new and the old shape must have the same size.
  • The view must be simple, cf. isSimple().
Parameters
beginIterator to the beginning of a sequence that determines the new shape.
endIterator to the end of that sequence.
See also
reshapedView(), isSimple()

Definition at line 2275 of file marray.hxx.

template<class T , bool isConst, class A >
template<class ShapeIterator >
View< T, isConst, A > marray::View< T, isConst, A >::reshapedView ( ShapeIterator  begin,
ShapeIterator  end 
) const
inline

Get a reshaped View.

Two conditions have to be fulfilled:

  • The new and the old shape must have the same size.
  • The view must be simple, cf. isSimple().
Parameters
beginIterator to the beginning of a sequence that determines the new shape.
endIterator to the end of that sequence.
See also
reshape(), isSimple()

Definition at line 2307 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t marray::View< T, isConst, A >::shape ( const size_t  dimension) const
inline

Get the shape in one dimension.

Parameters
dimensionDimension
Returns
Shape in that dimension.

Definition at line 1725 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
const size_t * marray::View< T, isConst, A >::shapeBegin ( ) const
inline

Get a constant iterator to the beginning of the shape vector.

Returns
iterator.
See also
shapeEnd()

Definition at line 1742 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
const size_t * marray::View< T, isConst, A >::shapeEnd ( ) const
inline

Get a constant iterator to the end of the shape vector.

Returns
iterator.
See also
shapeBegin()

Definition at line 1756 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::shift ( const int  n)
inline

Cycle shift dimensions.

Parameters
nNumber of positions to shift
See also
shiftedView(), permute(), permutedView(), transpose(), transposedView()

Definition at line 2665 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A > marray::View< T, isConst, A >::shiftedView ( const int  n) const
inline

Get a View which dimensions cycle shifted.

Parameters
nNumber of positions to shift
See also
shift(), permute(), permutedView(), transpose(), transposedView()

Definition at line 2697 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t marray::View< T, isConst, A >::size ( ) const
inline

Get the number of data items.

Returns
Size.

Definition at line 1698 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::squeeze ( )

Remove singleton dimensions by setting their coordinates to zero.

See also
squeezedView(), boundView()

Definition at line 2414 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A > marray::View< T, isConst, A >::squeezedView ( ) const
inline

Get a View where all singleton dimensions have been removed by setting their coordinates to zero.

See also
squeeze(), boundView()

Definition at line 2454 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t marray::View< T, isConst, A >::strides ( const size_t  dimension) const
inline

Get the strides in one dimension.

Parameters
dimensionDimension
Returns
Stride in that dimension.

Definition at line 1771 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t * marray::View< T, isConst, A >::stridesBegin ( ) const
inline

Get a constant iterator to the beginning of the strides vector.

Returns
iterator.
See also
stridesEnd()

Definition at line 1788 of file marray.hxx.

template<class T , bool isConst, class A >
const size_t * marray::View< T, isConst, A >::stridesEnd ( ) const
inline

Get a constant iterator to the end of the strides vector.

Returns
iterator.
See also
stridesBegin()

Definition at line 1802 of file marray.hxx.

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::transpose ( const size_t  c1,
const size_t  c2 
)

Exchange two dimensions.

Parameters
c1Dimension
c2Dimension
See also
permute(), permutedView(), shift(), shiftedView()

Definition at line 2558 of file marray.hxx.

template<class T , bool isConst, class A >
void marray::View< T, isConst, A >::transpose ( )

Reverse dimensions.

See also
transposedView(), permute(), permutedView(), shift(), shiftedView()

Definition at line 2597 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A > marray::View< T, isConst, A >::transposedView ( const size_t  c1,
const size_t  c2 
) const
inline

Get a View with two dimensions exchanged.

Parameters
c1Dimension
c2Dimension
Returns
Transposed View.
See also
transpose(), permute(), permutedView(), shift(), shiftedView()

Definition at line 2631 of file marray.hxx.

template<class T , bool isConst, class A >
View< T, isConst, A > marray::View< T, isConst, A >::transposedView ( ) const
inline

Get a View with dimensions reversed.

Returns
View with dimensions reversed.
See also
transpose(), permute(), permutedView(), shift(), shiftedView()

Definition at line 2649 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
void marray::View< T, isConst, A >::view ( BaseIterator  bit,
ShapeIterator  sit,
View< T, isConst, A > &  out 
) const
inline

Get a sub-view with the same coordinate order.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
outSub-View (output).

Definition at line 1987 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
void marray::View< T, isConst, A >::view ( BaseIterator  bit,
ShapeIterator  sit,
const CoordinateOrder internalCoordinateOrder,
View< T, isConst, A > &  out 
) const
inline

Get a sub-view.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
internalCoordinateOrderFlag to set the coordinate order for scalar indexing and iterators of the sub-view.
outSub-View (output).

Definition at line 2010 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
View< T, isConst, A > marray::View< T, isConst, A >::view ( BaseIterator  bit,
ShapeIterator  sit 
) const
inline

Get a sub-view with the same coordinate order.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
Returns
Sub-View.

Definition at line 2036 of file marray.hxx.

template<class T, bool isConst, class A>
template<class BaseIterator , class ShapeIterator >
View< T, isConst, A > marray::View< T, isConst, A >::view ( BaseIterator  bit,
ShapeIterator  sit,
const CoordinateOrder internalCoordinateOrder 
) const
inline

Get a sub-view.

Parameters
bitIterator to the beginning of a coordinate sequence that determines the start position of the sub-view.
sitIterator to the beginning of a sequence that determines the shape of the sub-view.
internalCoordinateOrderFlag to set the coordinate order for scalar indexing and iterators of the sub-view.
Returns
Sub-View.

Definition at line 2060 of file marray.hxx.