A type representing the dimensions of a multidimensional object.
More...
#include <ginkgo/core/base/dim.hpp>
|
using | dimension_type = DimensionType |
|
|
constexpr | dim () |
| Creates a dimension object with all dimensions set to zero.
|
|
constexpr | dim (const dimension_type &size) |
| Creates a dimension object with all dimensions set to the same value. More...
|
|
template<typename... Rest, std::enable_if_t< sizeof...(Rest)==Dimensionality - 1 > * = nullptr> |
constexpr | dim (const dimension_type &first, const Rest &... rest) |
| Creates a dimension object with the specified dimensions. More...
|
|
constexpr const dimension_type & | operator[] (const size_type &dimension) const noexcept |
| Returns the requested dimension. More...
|
|
dimension_type & | operator[] (const size_type &dimension) noexcept |
|
constexpr | operator bool () const |
| Checks if all dimensions evaluate to true. More...
|
|
|
static constexpr size_type | dimensionality = Dimensionality |
|
template<size_type Dimensionality, typename DimensionType = size_type>
struct gko::dim< Dimensionality, DimensionType >
A type representing the dimensions of a multidimensional object.
- Template Parameters
-
Dimensionality | number of dimensions of the object |
DimensionType | datatype used to represent each dimension |
◆ dim() [1/2]
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr gko::dim< Dimensionality, DimensionType >::dim |
( |
const dimension_type & |
size | ) |
|
|
inlineexplicitconstexpr |
Creates a dimension object with all dimensions set to the same value.
- Parameters
-
size | the size of each dimension |
◆ dim() [2/2]
template<size_type Dimensionality, typename DimensionType = size_type>
template<typename... Rest, std::enable_if_t< sizeof...(Rest)==Dimensionality - 1 > * = nullptr>
constexpr gko::dim< Dimensionality, DimensionType >::dim |
( |
const dimension_type & |
first, |
|
|
const Rest &... |
rest |
|
) |
| |
|
inlineconstexpr |
Creates a dimension object with the specified dimensions.
If the number of dimensions given is less than the dimensionality of the object, the remaining dimensions are set to the same value as the last value given.
For example, in the context of matrices dim<2>{2, 3}
creates the dimensions for a 2-by-3 matrix.
- Parameters
-
first | first dimension |
rest | other dimensions |
◆ operator bool()
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr gko::dim< Dimensionality, DimensionType >::operator bool |
( |
| ) |
const |
|
inlineexplicitconstexpr |
Checks if all dimensions evaluate to true.
For standard arithmetic types, this is equivalent to all dimensions being different than zero.
- Returns
- true if and only if all dimensions evaluate to true
- Note
- This operator is explicit to avoid implicit dim-to-int casts. It will still be used in contextual conversions (if, &&, ||, !)
◆ operator[]() [1/2]
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr const dimension_type& gko::dim< Dimensionality, DimensionType >::operator[] |
( |
const size_type & |
dimension | ) |
const |
|
inlineconstexprnoexcept |
Returns the requested dimension.
For example, if d
is a dim<2> object representing matrix dimensions, d[0]
returns the number of rows, and d[1]
returns the number of columns.
- Parameters
-
dimension | the requested dimension |
- Returns
- the
dimension
-th dimension
◆ operator[]() [2/2]
template<size_type Dimensionality, typename DimensionType = size_type>
dimension_type& gko::dim< Dimensionality, DimensionType >::operator[] |
( |
const size_type & |
dimension | ) |
|
|
inlinenoexcept |
◆ operator!=
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr friend bool operator!= |
( |
const dim< Dimensionality, DimensionType > & |
x, |
|
|
const dim< Dimensionality, DimensionType > & |
y |
|
) |
| |
|
friend |
Checks if two dim objects are not equal.
- Parameters
-
x | first object |
y | second object |
- Returns
- false if and only if all dimensions of both objects are equal.
◆ operator*
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr friend dim operator* |
( |
const dim< Dimensionality, DimensionType > & |
x, |
|
|
const dim< Dimensionality, DimensionType > & |
y |
|
) |
| |
|
friend |
Multiplies two dim objects.
- Parameters
-
x | first object |
y | second object |
- Returns
- a dim object representing the size of the tensor product
x * y
◆ operator<<
template<size_type Dimensionality, typename DimensionType = size_type>
std::ostream& operator<< |
( |
std::ostream & |
os, |
|
|
const dim< Dimensionality, DimensionType > & |
x |
|
) |
| |
|
friend |
A stream operator overload for dim.
- Parameters
-
os | stream object |
x | dim object |
- Returns
- a stream object appended with the dim output
◆ operator==
template<size_type Dimensionality, typename DimensionType = size_type>
constexpr friend bool operator== |
( |
const dim< Dimensionality, DimensionType > & |
x, |
|
|
const dim< Dimensionality, DimensionType > & |
y |
|
) |
| |
|
friend |
Checks if two dim objects are equal.
- Parameters
-
x | first object |
y | second object |
- Returns
- true if and only if all dimensions of both objects are equal.
The documentation for this struct was generated from the following file: