5#ifndef GKO_PUBLIC_CORE_BASE_RANGE_ACCESSORS_HPP_
6#define GKO_PUBLIC_CORE_BASE_RANGE_ACCESSORS_HPP_
11#include <ginkgo/core/base/range.hpp>
12#include <ginkgo/core/base/types.hpp>
39template <
typename ValueType,
size_type Dimensionality>
44 static_assert(Dimensionality == 2,
45 "This accessor is only implemented for matrices");
105 const span& cols)
const
107 return GKO_ASSERT(rows.is_valid()), GKO_ASSERT(cols.
is_valid()),
111 rows.end - rows.begin, cols.
end - cols.
begin,
124 return dimension < 2 ?
lengths[dimension] : 1;
139 template <
typename OtherAccessor>
140 GKO_ATTRIBUTES
void copy_from(
const OtherAccessor& other)
const
144 (*this)(i, j) = other(i, j);
157 const std::array<const size_type, dimensionality>
lengths;
Definition range_accessors.hpp:40
constexpr range< row_major > operator()(const span &rows, const span &cols) const
Definition range_accessors.hpp:104
constexpr size_type length(size_type dimension) const
Definition range_accessors.hpp:122
const std::array< const size_type, dimensionality > lengths
Definition range_accessors.hpp:157
constexpr row_major(data_type data, size_type num_rows, size_type num_cols, size_type stride)
Definition range_accessors.hpp:73
const size_type stride
Definition range_accessors.hpp:162
ValueType value_type
Definition range_accessors.hpp:50
void copy_from(const OtherAccessor &other) const
Definition range_accessors.hpp:140
const data_type data
Definition range_accessors.hpp:152
static constexpr size_type dimensionality
Definition range_accessors.hpp:60
constexpr value_type & operator()(size_type row, size_type col) const
Definition range_accessors.hpp:89
value_type * data_type
Definition range_accessors.hpp:55
The Ginkgo namespace.
Definition abstract_factory.hpp:20
std::size_t size_type
Definition types.hpp:89
constexpr bool is_valid() const
Definition range.hpp:73
const size_type begin
Definition range.hpp:85
const size_type end
Definition range.hpp:90