Domi
Multi-dimensional, distributed data structures
|
Memory-safe templated multi-dimensional array view class. More...
#include <Domi_MDArrayView.hpp>
Public Types | |
Public types | |
typedef T | value_type |
Value type. | |
typedef T * | pointer |
Pointer type. | |
typedef const T * | const_pointer |
Const pointer type. | |
typedef T & | reference |
Reference type. | |
typedef const T & | const_reference |
Const reference type. | |
Public Member Functions | |
Constructors and Destructor | |
MDArrayView (Teuchos::ENull null_arg=Teuchos::null) | |
Default constructor. More... | |
MDArrayView (const Teuchos::ArrayView< T > &array, const Teuchos::ArrayView< dim_type > &dims, const Layout layout=DEFAULT_ORDER) | |
Constructor with a source Teuchos::ArrayView , dimensions, and optional storage order. More... | |
MDArrayView (const Teuchos::ArrayView< T > &array, const Teuchos::Array< dim_type > &dims, const Teuchos::Array< size_type > &strides, const Layout layout=DEFAULT_ORDER) | |
Constructor with a source Teuchos::ArrayView , dimensions, strides, and optional storage order. More... | |
MDArrayView (const MDArrayView< T > &array) | |
Copy constructor. More... | |
MDArrayView (const MDArrayView< T > &parent, int axis, dim_type index) | |
MDArrayView (const MDArrayView< T > &parent, int axis, Slice slice) | |
MDArrayView< T > & | operator= (const MDArrayView< T > &array) |
Assignment operator. More... | |
~MDArrayView () | |
Destructor. | |
Attribute accesor methods | |
int | numDims () const |
Return the number of dimensions. | |
const Teuchos::Array< dim_type > & | dimensions () const |
Return the array of dimensions. | |
dim_type | dimension (int axis) const |
Return the dimension of the given axis. More... | |
size_type | size () const |
Return the total size of the MDArrayView | |
const Teuchos::Array< size_type > & | strides () const |
Return the indexing strides. | |
const Teuchos::ArrayView< T > & | arrayView () const |
Return the underlying Teuchos::ArrayView | |
const Teuchos::ArrayView < const T > & | arrayViewConst () const |
Return const version of the underlying Teuchos::ArrayView | |
Layout | layout () const |
Return the storage order. | |
bool | contiguous () const |
Return whether the MDArrayView is contiguous in memory. | |
Indexing operators that return MDArrayViews | |
MDArrayView< const T > | getConst () const |
Return an MDArrayView< const T > of an MDArrayView< T > object. More... | |
MDArrayView< T > | operator[] (dim_type i) |
Sub-array access operator. The returned MDArrayView object will have one fewer dimensions than the calling MDArrayView . More... | |
const MDArrayView< T > | operator[] (dim_type i) const |
Sub-array const access operator. The returned MDArrayView object will have one fewer dimensions than the calling MDArrayView . More... | |
MDArrayView< T > | operator[] (Slice s) |
Sub-array access operator. The returned MDArrayView object will have the same number of dimensions as the calling MDArrayView . More... | |
const MDArrayView< T > | operator[] (Slice s) const |
Sub-array const access operator. The returned MDArrayView object will have the same number of dimensions as the calling MDArrayView . More... | |
Indexing operators that return a reference to a single array element | |
T & | operator() (dim_type i) |
Non-const 1D element access operator. More... | |
T & | operator() (dim_type i, dim_type j) |
Non-const 2D element access operator. More... | |
T & | operator() (dim_type i, dim_type j, dim_type k) |
Non-const 3D element access operator. More... | |
T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m) |
Non-const 4D element access operator. More... | |
T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m, dim_type n) |
Non-const 5D element access operator. More... | |
T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m, dim_type n, dim_type p,...) |
Non-const 6D and higher element access operator. More... | |
const T & | operator() (dim_type i) const |
Const 1D element access operator. More... | |
const T & | operator() (dim_type i, dim_type j) const |
Const 2D element access operator. More... | |
const T & | operator() (dim_type i, dim_type j, dim_type k) const |
Const 3D element access operator. More... | |
const T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m) const |
Const 4D element access operator. More... | |
const T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m, dim_type n) const |
Const 5D element access operator. More... | |
const T & | operator() (dim_type i, dim_type j, dim_type k, dim_type m, dim_type n, dim_type p,...) const |
Const 6D and higher element access operator. More... | |
Friends | |
Non-member operators and functions | |
template<typename T2 > | |
bool | operator== (const MDArrayView< T2 > &a1, const MDArrayView< T2 > &a2) |
Equality operator. | |
template<typename T2 > | |
bool | operator!= (const MDArrayView< T2 > &a1, const MDArrayView< T2 > &a2) |
Inequality operator. | |
template<typename T2 > | |
void | swap (MDArrayView< T2 > &a1, MDArrayView< T2 > &a2) |
Swap function. | |
template<typename T2 > | |
std::ostream & | operator<< (std::ostream &os, const MDArrayView< T2 > &a) |
Stream output operator. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<typename T > | |
bool | operator== (const MDArray< T > &a1, const MDArrayView< T > &a2) |
MDArray/MDArrayView equality operator. | |
template<typename T > | |
bool | operator== (const MDArrayView< T > &a1, const MDArray< T > &a2) |
MDArrayView/MDArray equality operator. | |
template<typename T > | |
bool | operator!= (const MDArrayView< T > &a1, const MDArray< T > &a2) |
MDArrayView/MDArray inequality operator. | |
template<typename T > | |
bool | operator== (const MDArrayView< T > &a1, const MDArrayView< T > &a2) |
Equality operator. | |
template<typename T > | |
bool | operator!= (const MDArrayView< T > &a1, const MDArrayView< T > &a2) |
Inequality operator. | |
Iterator classes and methods | |
typedef MDIterator < MDArrayView< T > > | iterator |
typedef MDIterator < MDArrayView< const T > > | const_iterator |
typedef MDRevIterator < MDArrayView< T > > | reverse_iterator |
typedef MDRevIterator < MDArrayView< const T > > | const_reverse_iterator |
class | MDIterator< MDArrayView< T > > |
class | MDIterator< MDArrayView< const T > > |
class | MDRevIterator< MDArrayView< T > > |
class | MDRevIterator< MDArrayView< const T > > |
iterator | begin () |
Return the beginning iterator. | |
iterator | end () |
Return the ending iterator. | |
const_iterator | begin () const |
Return the beginning const_iterator. | |
const_iterator | end () const |
Return the ending const_iterator. | |
const_iterator | cbegin () const |
Return the beginning const_iterator. | |
const_iterator | cend () const |
Return the ending const_iterator. | |
reverse_iterator | rbegin () |
Return the beginning reverse_iterator. | |
reverse_iterator | rend () |
Return the ending reverse_iterator. | |
const_reverse_iterator | crbegin () const |
Return the beginning const_reverse_iterator. | |
const_reverse_iterator | crend () const |
Return the ending const_reverse_iterator. | |
Teuchos::Array-like and std::vector-like methods | |
void | assign (const T &value) |
Assign a value to all elements of the MDArrayView More... | |
T & | at (dim_type i,...) |
Non-const single element access method with bounds checking. More... | |
const T & | at (dim_type i,...) const |
Const single element access method with bounds checking. More... | |
std::string | toString () const |
Convert the MDArrayView to a string representation. | |
const T * | getRawPtr () const |
Return a const raw pointer to the beginning of the MDArrayView or NULL if unsized. | |
T * | getRawPtr () |
Return a raw pointer to the beginning of the MDArrayView or NULL if unsized. | |
static bool | hasBoundsChecking () |
Return true if MDArrayView has been compiled with bounds checking on. | |
Memory-safe templated multi-dimensional array view class.
The MDArrayView
class is to the MDArray
class as the Teuchos::ArrayView
class is to the Teuchos::Array
class. Its primary function is to provide sub-views into both MDArray
objects and other MDArrayView
objects.
MDArrayView
objects have a similar interface to the MDArray
class and much of the behavior is the same as is described in the MDArray
documentation. The big difference is that MDArrayView
objects are constructed with pre-existing data buffers.
Domi::MDArrayView< T >::MDArrayView | ( | Teuchos::ENull | null_arg = Teuchos::null | ) |
Default constructor.
null_arg | [in] Enumerated constant denoting null construction |
Returns a view into an array of 1 dimension of length zero with NULL pointer.
Domi::MDArrayView< T >::MDArrayView | ( | const Teuchos::ArrayView< T > & | array, |
const Teuchos::ArrayView< dim_type > & | dims, | ||
const Layout | layout = DEFAULT_ORDER |
||
) |
Constructor with a source Teuchos::ArrayView
, dimensions, and optional storage order.
array | [in] Teuchos::ArrayView of the data buffer |
dims | [in] An array that defines the lengths of each dimension. The most convenient way to specify dimensions is with a Tuple returned by the non-member Teuchos::tuple<T>() function. |
layout | [in] An enumerated value specifying the internal storage order of the MDArrayView |
Domi::MDArrayView< T >::MDArrayView | ( | const Teuchos::ArrayView< T > & | array, |
const Teuchos::Array< dim_type > & | dims, | ||
const Teuchos::Array< size_type > & | strides, | ||
const Layout | layout = DEFAULT_ORDER |
||
) |
Constructor with a source Teuchos::ArrayView
, dimensions, strides, and optional storage order.
array | [in] Teuchos::ArrayView of the data buffer |
dims | [in] An array that defines the lengths of each dimension. |
strides | [in] An array that defines the strides between elements along each axis. |
layout | [in] An enumerated value specifying the internal storage order of the MDArrayView |
Note that this constructor was introduced specifically to implement the getConst() method, which converts an MDArrayView< T > to an MDArrayView< const T >. The presence of both strides and layout in the input arguments makes this an easy constructor to call incorrectly, and is not advised for general use.
Domi::MDArrayView< T >::MDArrayView | ( | const MDArrayView< T > & | array | ) |
Copy constructor.
array | [in] The source MDArrayView to be copied |
void Domi::MDArrayView< T >::assign | ( | const T & | value | ) |
Assign a value to all elements of the MDArrayView
value | [in] The value to be assigned |
T & Domi::MDArrayView< T >::at | ( | dim_type | i, |
... | |||
) |
Non-const single element access method with bounds checking.
i,... | [in] Indexes representing the location of the single element of the MDArrayView to be accessed. Note that this method assumes that the user will provide the same number of arguments as the number of dimensions of the MDArrayView . |
const T & Domi::MDArrayView< T >::at | ( | dim_type | i, |
... | |||
) | const |
Const single element access method with bounds checking.
i,... | [in] Indexes representing the location of the single element of the MDArrayView to be accessed. Note that this method assumes that the user will provide the same number of arguments as the number of dimensions of the MDArrayView . |
|
inline |
Return the dimension of the given axis.
axis | [in] The axis being queried (0 for the first axis, 1 for the second axis, and so forth) |
MDArrayView< const T > Domi::MDArrayView< T >::getConst | ( | ) | const |
Return an MDArrayView< const T > of an MDArrayView< T > object.
WARNING! If T
is already const (e.g. const double
) then do not try to instantiate this function since it will not compile!
|
inline |
Non-const 1D element access operator.
i | [in] 1D index. |
This operator should only be used with a 1D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 1D, an exception will be thrown.
|
inline |
Non-const 2D element access operator.
i | [in] first 2D index. |
j | [in] second 2D index. |
This operator should only be used with a 2D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 2D, an exception will be thrown.
|
inline |
Non-const 3D element access operator.
i | [in] first 3D index. |
j | [in] second 3D index. |
k | [in] third 3D index. |
This operator should only be used with a 3D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 3D, an exception will be thrown.
|
inline |
Non-const 4D element access operator.
i | [in] first 4D index. |
j | [in] second 4D index. |
k | [in] third 4D index. |
m | [in] fourth 4D index. |
This operator should only be used with a 4D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 4D, an exception will be thrown.
|
inline |
Non-const 5D element access operator.
i | [in] first 5D index. |
j | [in] second 5D index. |
k | [in] third 5D index. |
m | [in] fourth 5D index. |
n | [in] fifth 5D index. |
This operator should only be used with a 5D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 5D, an exception will be thrown.
|
inline |
Non-const 6D and higher element access operator.
i | [in] first index. |
j | [in] second index. |
k | [in] third index. |
m | [in] fourth index. |
n | [in] fifth index. |
p | [in] sixth index. |
... | [in] seventh and higher indexes. |
This operator should only be used with a 6D and higher MDArrayView
s. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is less than 6D, an exception will be thrown.
|
inline |
Const 1D element access operator.
i | [in] 1D index. |
This operator should only be used with a 1D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 1D, an exception will be thrown.
|
inline |
Const 2D element access operator.
i | [in] first 2D index. |
j | [in] second 2D index. |
This operator should only be used with a 2D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 2D, an exception will be thrown.
|
inline |
Const 3D element access operator.
i | [in] first 3D index. |
j | [in] second 3D index. |
k | [in] third 3D index. |
This operator should only be used with a 3D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 3D, an exception will be thrown.
|
inline |
Const 4D element access operator.
i | [in] first 4D index. |
j | [in] second 4D index. |
k | [in] third 4D index. |
m | [in] fourth 4D index. |
This operator should only be used with a 4D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 4D, an exception will be thrown.
|
inline |
Const 5D element access operator.
i | [in] first 5D index. |
j | [in] second 5D index. |
k | [in] third 5D index. |
m | [in] fourth 5D index. |
n | [in] fifth 5D index. |
This operator should only be used with a 5D MDArrayView
. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is not 5D, an exception will be thrown.
|
inline |
Const 6D and higher element access operator.
i | [in] first index. |
j | [in] second index. |
k | [in] third index. |
m | [in] fourth index. |
n | [in] fifth index. |
p | [in] sixth index. |
... | [in] seventh and higher indexes. |
This operator should only be used with a 6D and higher MDArrayView
s. If HAVE_DOMI_ARRAY_BOUNDSCHECK is true and the MDArrayView
is less than 6D, an exception will be thrown.
MDArrayView< T > & Domi::MDArrayView< T >::operator= | ( | const MDArrayView< T > & | array | ) |
Assignment operator.
array | [in] The source MDArrayView to be copied |
MDArrayView< T > Domi::MDArrayView< T >::operator[] | ( | dim_type | i | ) |
Sub-array access operator. The returned MDArrayView
object will have one fewer dimensions than the calling MDArrayView
.
i | [in] Index of the desired sub-array. Note that to obtain expected behavior, you should always chain together n square bracket operators when referencing an n -dimensional MDArrayView . |
const MDArrayView< T > Domi::MDArrayView< T >::operator[] | ( | dim_type | i | ) | const |
Sub-array const access operator. The returned MDArrayView
object will have one fewer dimensions than the calling MDArrayView
.
i | [in] Index of the desired sub-array. Note that to obtain expected behavior, you should always chain together n square bracket operators when referencing an n -dimensional MDArrayView . |
MDArrayView< T > Domi::MDArrayView< T >::operator[] | ( | Slice | s | ) |
Sub-array access operator. The returned MDArrayView
object will have the same number of dimensions as the calling MDArrayView
.
s | [in] Slice representing the bounds of the desired sub-array. Note that to obtain expected behavior, you should always chain together n square bracket operators when referencing an n -dimensional MDArrayView . |
const MDArrayView< T > Domi::MDArrayView< T >::operator[] | ( | Slice | s | ) | const |
Sub-array const access operator. The returned MDArrayView
object will have the same number of dimensions as the calling MDArrayView
.
s | [in] Slice representing the bounds of the desired sub-array. Note that to obtain expected behavior, you should always chain together n square bracket operators when referencing an n -dimensional MDArrayView . |
|
friend |
Stream output operator.
This operator calls the MDArrayView toString()
method.