33 #ifndef GKO_CORE_BASE_RANGE_ACCESSORS_HPP_ 34 #define GKO_CORE_BASE_RANGE_ACCESSORS_HPP_ 37 #include <ginkgo/core/base/range.hpp> 67 template <
typename ValueType,
size_type Dimensionality>
70 friend class range<row_major>;
72 static_assert(Dimensionality == 2,
73 "This accessor is only implemented for matrices");
120 return GKO_ASSERT(row <
lengths[0]), GKO_ASSERT(col <
lengths[1]),
133 const span &cols)
const 152 return dimension < 2 ?
lengths[dimension] : 1;
162 template <
typename OtherAccessor>
163 GKO_ATTRIBUTES
void copy_from(
const OtherAccessor &other)
const 166 for (
size_type j = 0; j < lengths[1]; ++j) {
167 (*this)(i, j) = other(i, j);
180 const std::array<const size_type, dimensionality>
lengths;
193 #endif // GKO_CORE_BASE_RANGE_ACCESSORS_HPP_ const size_type end
End of the span.
Definition: range.hpp:110
constexpr bool is_valid() const
Checks if a span is valid.
Definition: range.hpp:100
A row_major accessor is a bridge between a range and the row-major memory layout. ...
Definition: range_accessors.hpp:68
std::size_t size_type
Integral type used for allocation quantities.
Definition: types.hpp:94
The Ginkgo namespace.
Definition: abstract_factory.hpp:45
constexpr range< row_major > operator()(const span &rows, const span &cols) const
Returns the sub-range spanning the range (rows, cols)
Definition: range_accessors.hpp:132
const std::array< const size_type, dimensionality > lengths
An array of dimension sizes.
Definition: range_accessors.hpp:180
const data_type data
Reference to the underlying data.
Definition: range_accessors.hpp:175
const size_type stride
Distance between consecutive rows.
Definition: range_accessors.hpp:185
static constexpr size_type dimensionality
Number of dimensions of the accessor.
Definition: range_accessors.hpp:88
void copy_from(const OtherAccessor &other) const
Copies data from another accessor.
Definition: range_accessors.hpp:163
ValueType value_type
Type of values returned by the accessor.
Definition: range_accessors.hpp:78
value_type * data_type
Type of underlying data storage.
Definition: range_accessors.hpp:83
const size_type begin
Beginning of the span.
Definition: range.hpp:105
constexpr size_type length(size_type dimension) const
Returns the length in dimension dimension.
Definition: range_accessors.hpp:150
constexpr value_type & operator()(size_type row, size_type col) const
Returns the data element at position (row, col)
Definition: range_accessors.hpp:117
A span is a lightweight structure used to create sub-ranges from other ranges.
Definition: range.hpp:73
A range is a multidimensional view of the memory.
Definition: range.hpp:296