shards Version of the Day
Loading...
Searching...
No Matches
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 > Class Template Reference

The preferred multi-dimensional Array interface with compile-time user-defined dimension ordinates. More...

#include <Shards_Array.hpp>

Inheritance diagram for shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >:

Protected Member Functions

 Array (const Array< Scalar, array_order > &rhs, size_type i)

Protected Attributes

Array< value_type, array_order > m_array

Friends

template<typename, ArrayOrder, class, class, class, class, class, class, class, class>
class shards::Array

Array Attributes

enum  { Rank = helper::Rank }
 Rank of the array is the number of non-void dimension tags. More...
enum  { Natural = NaturalOrder == array_order }
 If the multidimension follows the natural ordering. More...
enum  { Reverse = FortranOrder == array_order }
 If the multidimension follows the reverse (Fortran) ordering. More...
enum  { Contiguous = true }
 If the member data storage is contiguous. More...
typedef Scalar value_type
 Type of member data.
typedef array_traits::int_t size_type
 Type for sizes.
typedef const ArrayDimTagtag_type
 Type of runtime dimension tags.
size_type rank () const
 Rank of the array is the number of non-void dimension tags.
bool natural () const
 If the multidimension follows the natural ordering.
bool reverse () const
 If the multidimension follows the reverse (Fortran) ordering.
bool contiguous () const
 If the member data storage is contiguous.
tag_type tag (const size_type ordinate) const
 Access the dimension tag-singleton for a given ordinate.
template<size_type ordinate>
size_type dimension () const
 Dimension of the given ordinate.
size_type dimension (const size_type ordinate) const
 Dimension of the given ordinate.
template<typename iType>
void dimensions (std::vector< iType > &n)
 Dimensions of all ordinates.
size_type size () const
 Total number of member data items.

Member data access operators

typedef helper::truncate TruncateType
 Subarray type that removes the slowest striding dimension (first natural or last fortran ordinate).
template<typename iType>
TruncateType truncate (const iType &i) const
 Generate a subarray view of the array with the slowest striding ordinate offset by i and removed.
value_typecontiguous_data () const
 Pointer to contiguous block of member data.
template<typename iType>
value_typeoperator[] (const iType &i) const
 Access member via offset into contiguous block.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3, const iType &i4, const iType &i5, const iType &i6, const iType &i7, const iType &i8) const
 Access member of a Rank 8 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3, const iType &i4, const iType &i5, const iType &i6, const iType &i7) const
 Access member of a Rank 7 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3, const iType &i4, const iType &i5, const iType &i6) const
 Access member of a Rank 6 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3, const iType &i4, const iType &i5) const
 Access member of a Rank 5 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3, const iType &i4) const
 Access member of a Rank 4 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2, const iType &i3) const
 Access member of a Rank 3 array.
template<typename iType>
value_typeoperator() (const iType &i1, const iType &i2) const
 Access member of a Rank 2 array.
template<typename iType>
value_typeoperator() (const iType &i1) const
 Access member of a Rank 1 array.

Constructors and Assignment Operators

typedef helper::reverse ReverseType
 The compatible multidimensional array with reversed multi-index ordering and dimension tags.
 Array ()
 Default constructor.
 Array (const Array &rhs)
 Copy constructor.
Array & operator= (const Array &rhs)
 Assignment operator.
 Array (const ReverseType &rhs)
 Copy constructor for compatible reverse type.
Array & operator= (const ReverseType &rhs)
 Assignment operator for compatible reverse type.
Array & assign (value_type *arg_ptr, const size_type *const dims)
 Assign pointer and dimensions.
 Array (value_type *arg_ptr, const size_type *const dims)
 Construct with array of dimensions.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6, const size_type n7, const size_type n8)
 Construct a Rank 8 array.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6, const size_type n7, const size_type n8)
 Construct a Rank 8 array.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6, const size_type n7)
 Construct a Rank 7..8 array; use Tag#::Size for defaults. The input dimensions are the 7 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6, const size_type n7)
 Construct a Rank 7..8 array; use Tag#::Size for defaults. The input dimensions are the 7 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6)
 Construct a Rank 6..8 array; use Tag#::Size for defaults. The input dimensions are the 6 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5, const size_type n6)
 Construct a Rank 6..8 array; use Tag#::Size for defaults. The input dimensions are the 6 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5)
 Construct a Rank 5..8 array; use Tag#::Size for defaults. The input dimensions are the 5 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4, const size_type n5)
 Construct a Rank 5..8 array; use Tag#::Size for defaults. The input dimensions are the 5 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4)
 Construct a Rank 4..8 array; use Tag#::Size for defaults. The input dimensions are the 4 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3, const size_type n4)
 Construct a Rank 4..8 array; use Tag#::Size for defaults. The input dimensions are the 4 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3)
 Construct a Rank 3..8 array; use Tag#::Size for defaults. The input dimensions are the 3 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2, const size_type n3)
 Construct a Rank 3..8 array; use Tag#::Size for defaults. The input dimensions are the 3 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1, const size_type n2)
 Construct a Rank 2..8 array; use Tag#::Size for defaults. The input dimensions are the 2 slowest strides.
 Array (value_type *arg_ptr, const size_type n1, const size_type n2)
 Construct a Rank 2..8 array; use Tag#::Size for defaults. The input dimensions are the 2 slowest strides.
Array & assign (value_type *arg_ptr, const size_type n1)
 Construct a Rank 1..8 array; use Tag#::Size for defaults. The input dimension is the slowest stride.
 Array (value_type *arg_ptr, const size_type n1)
 Construct a Rank 1..8 array; use Tag#::Size for defaults. The input dimension is the slowest stride.
Array & assign (value_type *arg_ptr)
 Construct a Rank 1..8 array; use Tag#::Size for defaults.
 Array (value_type *arg_ptr)
 Construct a Rank 1..8 array; use Tag#::Size for defaults.
 Array (const Array< Scalar, array_order > &rhs)
 Construct compile-time array from run-time array.
 operator const Array< Scalar, array_order > & () const
 Return internal runtime implementation of the array.
 operator typename Array< Scalar, array_order >::ReverseType () const
 Return constructed reversed-ordering array.
void assign_stride (value_type *arg_ptr, const size_type *arg_stride)
 Assign stride and pointer.
void assign_stride (value_type *arg_ptr, const size_type *arg_stride, size_type arg_final_dim)
 Assign stride and pointer.

Detailed Description

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
class shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >

The preferred multi-dimensional Array interface with compile-time user-defined dimension ordinates.

Template Parameters
ScalarThe "plain old data" type of the array's member data.
array_orderAn ArrayOrder value that specifies whether to use Natural (a.k.a. C-language) or Fortran ordering for the multi-dimensions and multi-indices.
Tag#The Tag# template parameters document the user-defiend purpose of each dimension ordinate. The Rank of the array (i.e. the number of dimensions) is the number of user-defined dimension tags, up to eight. A user-defined dimension Tag# must be derived from the ArrayDimTag template class.
See also
ArrayDimTag ArrayOrder

Definition at line 3579 of file Shards_Array.hpp.

Member Typedef Documentation

◆ value_type

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
typedef Scalar shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::value_type

Type of member data.

Definition at line 3596 of file Shards_Array.hpp.

◆ size_type

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
typedef array_traits::int_t shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::size_type

Type for sizes.

Definition at line 3599 of file Shards_Array.hpp.

◆ tag_type

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
typedef const ArrayDimTag* shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::tag_type

Type of runtime dimension tags.

Definition at line 3602 of file Shards_Array.hpp.

◆ TruncateType

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
typedef helper::truncate shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::TruncateType

Subarray type that removes the slowest striding dimension (first natural or last fortran ordinate).

Definition at line 3676 of file Shards_Array.hpp.

◆ ReverseType

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
typedef helper::reverse shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::ReverseType

The compatible multidimensional array with reversed multi-index ordering and dimension tags.

Definition at line 3780 of file Shards_Array.hpp.

Member Enumeration Documentation

◆ anonymous enum

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
anonymous enum

Rank of the array is the number of non-void dimension tags.

Definition at line 3607 of file Shards_Array.hpp.

◆ anonymous enum

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
anonymous enum

If the multidimension follows the natural ordering.

Definition at line 3610 of file Shards_Array.hpp.

◆ anonymous enum

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
anonymous enum

If the multidimension follows the reverse (Fortran) ordering.

Definition at line 3613 of file Shards_Array.hpp.

◆ anonymous enum

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
anonymous enum

If the member data storage is contiguous.

Definition at line 3616 of file Shards_Array.hpp.

Constructor & Destructor Documentation

◆ Array() [1/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( )
inline

Default constructor.

Definition at line 3783 of file Shards_Array.hpp.

◆ Array() [2/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( const Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 > & rhs)
inline

Copy constructor.

Definition at line 3787 of file Shards_Array.hpp.

◆ Array() [3/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( const ReverseType & rhs)
inline

Copy constructor for compatible reverse type.

Definition at line 3794 of file Shards_Array.hpp.

◆ Array() [4/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type *const dims )
inline

Construct with array of dimensions.

Definition at line 3809 of file Shards_Array.hpp.

◆ Array() [5/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6,
const size_type n7,
const size_type n8 )
inline

Construct a Rank 8 array.

Definition at line 3831 of file Shards_Array.hpp.

◆ Array() [6/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6,
const size_type n7 )
inline

Construct a Rank 7..8 array; use Tag#::Size for defaults. The input dimensions are the 7 slowest strides.

Definition at line 3861 of file Shards_Array.hpp.

◆ Array() [7/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6 )
inline

Construct a Rank 6..8 array; use Tag#::Size for defaults. The input dimensions are the 6 slowest strides.

Definition at line 3890 of file Shards_Array.hpp.

◆ Array() [8/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5 )
inline

Construct a Rank 5..8 array; use Tag#::Size for defaults. The input dimensions are the 5 slowest strides.

Definition at line 3918 of file Shards_Array.hpp.

◆ Array() [9/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4 )
inline

Construct a Rank 4..8 array; use Tag#::Size for defaults. The input dimensions are the 4 slowest strides.

Definition at line 3945 of file Shards_Array.hpp.

◆ Array() [10/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3 )
inline

Construct a Rank 3..8 array; use Tag#::Size for defaults. The input dimensions are the 3 slowest strides.

Definition at line 3971 of file Shards_Array.hpp.

◆ Array() [11/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1,
const size_type n2 )
inline

Construct a Rank 2..8 array; use Tag#::Size for defaults. The input dimensions are the 2 slowest strides.

Definition at line 3996 of file Shards_Array.hpp.

◆ Array() [12/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr,
const size_type n1 )
inline

Construct a Rank 1..8 array; use Tag#::Size for defaults. The input dimension is the slowest stride.

Definition at line 4018 of file Shards_Array.hpp.

◆ Array() [13/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( value_type * arg_ptr)
inline

Construct a Rank 1..8 array; use Tag#::Size for defaults.

Definition at line 4035 of file Shards_Array.hpp.

◆ Array() [14/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( const Array< Scalar, array_order > & rhs)
inline

Construct compile-time array from run-time array.

Definition at line 4044 of file Shards_Array.hpp.

◆ Array() [15/15]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::Array ( const Array< Scalar, array_order > & rhs,
size_type i )
inlineprotected

Definition at line 4085 of file Shards_Array.hpp.

Member Function Documentation

◆ rank()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
size_type shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::rank ( ) const
inline

Rank of the array is the number of non-void dimension tags.

Definition at line 3619 of file Shards_Array.hpp.

◆ natural()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
bool shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::natural ( ) const
inline

If the multidimension follows the natural ordering.

Definition at line 3622 of file Shards_Array.hpp.

◆ reverse()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
bool shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::reverse ( ) const
inline

If the multidimension follows the reverse (Fortran) ordering.

Definition at line 3625 of file Shards_Array.hpp.

◆ contiguous()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
bool shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::contiguous ( ) const
inline

If the member data storage is contiguous.

Definition at line 3628 of file Shards_Array.hpp.

◆ tag()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
tag_type shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::tag ( const size_type ordinate) const
inline

Access the dimension tag-singleton for a given ordinate.

Definition at line 3641 of file Shards_Array.hpp.

◆ dimension() [1/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<size_type ordinate>
size_type shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::dimension ( ) const
inline

Dimension of the given ordinate.

Definition at line 3646 of file Shards_Array.hpp.

◆ dimension() [2/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
size_type shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::dimension ( const size_type ordinate) const
inline

Dimension of the given ordinate.

Definition at line 3653 of file Shards_Array.hpp.

◆ dimensions()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
void shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::dimensions ( std::vector< iType > & n)
inline

Dimensions of all ordinates.

Definition at line 3661 of file Shards_Array.hpp.

◆ size()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
size_type shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::size ( ) const
inline

Total number of member data items.

Definition at line 3665 of file Shards_Array.hpp.

◆ truncate()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
TruncateType shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::truncate ( const iType & i) const
inline

Generate a subarray view of the array with the slowest striding ordinate offset by i and removed.

Definition at line 3683 of file Shards_Array.hpp.

◆ contiguous_data()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
value_type * shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::contiguous_data ( ) const
inline

Pointer to contiguous block of member data.

Definition at line 3688 of file Shards_Array.hpp.

◆ operator[]()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator[] ( const iType & i) const
inline

Access member via offset into contiguous block.

Definition at line 3692 of file Shards_Array.hpp.

◆ operator()() [1/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3,
const iType & i4,
const iType & i5,
const iType & i6,
const iType & i7,
const iType & i8 ) const
inline

Access member of a Rank 8 array.

Definition at line 3697 of file Shards_Array.hpp.

◆ operator()() [2/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3,
const iType & i4,
const iType & i5,
const iType & i6,
const iType & i7 ) const
inline

Access member of a Rank 7 array.

Definition at line 3708 of file Shards_Array.hpp.

◆ operator()() [3/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3,
const iType & i4,
const iType & i5,
const iType & i6 ) const
inline

Access member of a Rank 6 array.

Definition at line 3719 of file Shards_Array.hpp.

◆ operator()() [4/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3,
const iType & i4,
const iType & i5 ) const
inline

Access member of a Rank 5 array.

Definition at line 3729 of file Shards_Array.hpp.

◆ operator()() [5/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3,
const iType & i4 ) const
inline

Access member of a Rank 4 array.

Definition at line 3739 of file Shards_Array.hpp.

◆ operator()() [6/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2,
const iType & i3 ) const
inline

Access member of a Rank 3 array.

Definition at line 3748 of file Shards_Array.hpp.

◆ operator()() [7/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1,
const iType & i2 ) const
inline

Access member of a Rank 2 array.

Definition at line 3757 of file Shards_Array.hpp.

◆ operator()() [8/8]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename iType>
value_type & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator() ( const iType & i1) const
inline

Access member of a Rank 1 array.

Definition at line 3765 of file Shards_Array.hpp.

◆ operator=() [1/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator= ( const Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 > & rhs)
inline

Assignment operator.

Definition at line 3790 of file Shards_Array.hpp.

◆ operator=() [2/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator= ( const ReverseType & rhs)
inline

Assignment operator for compatible reverse type.

Definition at line 3797 of file Shards_Array.hpp.

◆ assign() [1/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type *const dims )
inline

Assign pointer and dimensions.

Definition at line 3801 of file Shards_Array.hpp.

◆ assign() [2/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6,
const size_type n7,
const size_type n8 )
inline

Construct a Rank 8 array.

Definition at line 3818 of file Shards_Array.hpp.

◆ assign() [3/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6,
const size_type n7 )
inline

Construct a Rank 7..8 array; use Tag#::Size for defaults. The input dimensions are the 7 slowest strides.

Definition at line 3846 of file Shards_Array.hpp.

◆ assign() [4/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5,
const size_type n6 )
inline

Construct a Rank 6..8 array; use Tag#::Size for defaults. The input dimensions are the 6 slowest strides.

Definition at line 3876 of file Shards_Array.hpp.

◆ assign() [5/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4,
const size_type n5 )
inline

Construct a Rank 5..8 array; use Tag#::Size for defaults. The input dimensions are the 5 slowest strides.

Definition at line 3904 of file Shards_Array.hpp.

◆ assign() [6/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3,
const size_type n4 )
inline

Construct a Rank 4..8 array; use Tag#::Size for defaults. The input dimensions are the 4 slowest strides.

Definition at line 3932 of file Shards_Array.hpp.

◆ assign() [7/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2,
const size_type n3 )
inline

Construct a Rank 3..8 array; use Tag#::Size for defaults. The input dimensions are the 3 slowest strides.

Definition at line 3958 of file Shards_Array.hpp.

◆ assign() [8/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1,
const size_type n2 )
inline

Construct a Rank 2..8 array; use Tag#::Size for defaults. The input dimensions are the 2 slowest strides.

Definition at line 3984 of file Shards_Array.hpp.

◆ assign() [9/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr,
const size_type n1 )
inline

Construct a Rank 1..8 array; use Tag#::Size for defaults. The input dimension is the slowest stride.

Definition at line 4007 of file Shards_Array.hpp.

◆ assign() [10/10]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array & shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign ( value_type * arg_ptr)
inline

Construct a Rank 1..8 array; use Tag#::Size for defaults.

Definition at line 4027 of file Shards_Array.hpp.

◆ operator const Array< Scalar, array_order > &()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator const Array< Scalar, array_order > & ( ) const
inline

Return internal runtime implementation of the array.

Definition at line 4056 of file Shards_Array.hpp.

◆ operator typename Array< Scalar, array_order >::ReverseType()

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::operator typename Array< Scalar, array_order >::ReverseType ( ) const
inline

Return constructed reversed-ordering array.

Definition at line 4059 of file Shards_Array.hpp.

◆ assign_stride() [1/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
void shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign_stride ( value_type * arg_ptr,
const size_type * arg_stride )
inline

Assign stride and pointer.

Definition at line 4063 of file Shards_Array.hpp.

◆ assign_stride() [2/2]

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
void shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::assign_stride ( value_type * arg_ptr,
const size_type * arg_stride,
size_type arg_final_dim )
inline

Assign stride and pointer.

Definition at line 4072 of file Shards_Array.hpp.

◆ shards::Array

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
template<typename, ArrayOrder, class, class, class, class, class, class, class, class>
friend class shards::Array
friend

Definition at line 4101 of file Shards_Array.hpp.

Member Data Documentation

◆ m_array

template<typename Scalar, ArrayOrder array_order, class Tag1, class Tag2, class Tag3, class Tag4, class Tag5, class Tag6, class Tag7, class Tag8>
Array<value_type,array_order> shards::Array< Scalar, array_order, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 >::m_array
protected

Definition at line 4096 of file Shards_Array.hpp.


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