1#ifndef TATOOINE_NON_OWNING_MULTIDIM_ARRAY_H
2#define TATOOINE_NON_OWNING_MULTIDIM_ARRAY_H
8template <
typename T,
typename IndexOrder = x_fastest>
38 template <
typename OtherIndexing>
41 if (parent_type::operator!=(other)) {
52 template <
unsigned_
integral UInt>
59 auto at(
integral auto const... is)
const ->
auto const& {
66 using Indices = std::decay_t<
decltype(
indices)>;
67 static_assert(is_integral<typename Indices::value_type>,
68 "index range must hold integral type");
78 std::cerr <<
"will now crash because indices [ ";
79 ((std::cerr << is <<
' '), ...);
80 std::cerr <<
"] are not in range\n";
88 using Indices = std::decay_t<
decltype(
indices)>;
89 static_assert(is_integral<typename Indices::value_type>,
90 "index range must hold integral type");
Definition: dynamic_multidim_size.h:16
auto constexpr in_range(integral auto const ... indices) const
Definition: dynamic_multidim_size.h:130
auto num_dimensions() const
Definition: dynamic_multidim_size.h:105
auto resize(integral auto const ... size) -> void
Definition: dynamic_multidim_size.h:116
auto num_components() const
Definition: dynamic_multidim_size.h:111
auto operator=(dynamic_multidim_size const &other) -> dynamic_multidim_size &=default
Definition: non_owning_multidim_array.h:9
auto operator[](size_t i) const -> auto const &
Definition: non_owning_multidim_array.h:96
non_owning_multidim_array(non_owning_multidim_array const &other)=default
auto operator=(non_owning_multidim_array const &other) -> non_owning_multidim_array &=default
auto operator[](size_t i) -> auto &
Definition: non_owning_multidim_array.h:97
auto operator()(integral auto const ... is) const -> auto const &
Definition: non_owning_multidim_array.h:74
auto operator=(non_owning_multidim_array< T, OtherIndexing > const &other) -> non_owning_multidim_array &
Definition: non_owning_multidim_array.h:39
auto constexpr plain_index(integral auto const ... indices) const
Definition: dynamic_multidim_size.h:149
auto constexpr in_range(integral auto const ... indices) const
Definition: dynamic_multidim_size.h:130
non_owning_multidim_array(T const *data, integral auto const ... size)
Definition: non_owning_multidim_array.h:48
auto at(integral auto const ... is) const -> auto const &
Definition: non_owning_multidim_array.h:59
T value_type
Definition: non_owning_multidim_array.h:14
T const * m_data
Definition: non_owning_multidim_array.h:26
auto indices() const
Definition: dynamic_multidim_size.h:236
~non_owning_multidim_array()=default
constexpr auto data() const -> auto
Definition: non_owning_multidim_array.h:99
auto size() const -> auto const &
Definition: dynamic_multidim_size.h:107
auto at(range auto const &indices) const -> auto const &
Definition: non_owning_multidim_array.h:65
auto num_dimensions() const
Definition: dynamic_multidim_size.h:105
non_owning_multidim_array(T const *data, std::vector< UInt > const &size)
Definition: non_owning_multidim_array.h:53
auto change_data(T const *new_data)
Definition: non_owning_multidim_array.h:101
auto operator()(range auto const &indices) const -> auto const &
Definition: non_owning_multidim_array.h:87
Definition: concepts.h:21
Definition: concepts.h:84
Definition: algorithm.h:6
constexpr auto plain_index() const -> auto const &
Definition: vertex_handle.h:37
An empty struct that holds types.
Definition: type_list.h:248