10#include <kernel/geometry/index_set.hpp>
16namespace FEAT::Geometry::Intern
18 template<
typename VertexMarking_,
int size_>
21 static_assert(size_ > 0,
"Invalid RefinementFieldTuple size. Must be greater than 0.");
27 static constexpr int size = size_;
36 return levels[std::size_t(idx)];
43 return levels[std::size_t(idx)];
47 template<
typename VertexMarking_>
51 using VertexMarkingType = VertexMarking_;
54 std::vector<VertexMarkingType> _markings;
61 RefinementField(
Index num_vertices, VertexMarkingType default_marking) : _markings(num_vertices, default_marking)
67 _markings(std::forward<std::vector<VertexMarkingType>>(
other._markings))
79 _markings = std::forward<std::vector<VertexMarkingType>>(
other._markings);
96 ASSERT(idx < _markings.size());
97 return _markings[idx];
103 ASSERT(idx < _markings.size());
104 return _markings[idx];
107 std::size_t size()
const
109 return _markings.size();
115 RefinementFieldTuple<VertexMarkingType, n_> result = {};
117 for(
int i(0); i < n_; ++i)
119 result[i] = _markings[indices[i]];
#define ASSERT(expr)
Debug-Assertion macro definition.
RefinementField & operator=(RefinementField &other)=delete
deleted copy-assign operator
VertexMarkingType & operator[](Index idx)
access operator
RefinementField(RefinementField &other)=delete
deleted copy-constructor
~RefinementField()=default
destructor
const VertexMarkingType & operator[](Index idx) const
const access operator
RefinementField & operator=(RefinementField &&other) noexcept
move-assign operator
RefinementField(RefinementField &&other) noexcept
move-constructor
VertexMarking_ VertexMarkingType
Type of vertex marking.
static constexpr int size
Tuple size.
std::array< VertexMarkingType, std::size_t(size_)> levels
Tuple values.
VertexMarkingType & operator[](int idx)
access operator
const VertexMarkingType & operator[](int idx) const
access operator
@ other
generic/other permutation strategy
std::uint64_t Index
Index data type.
Index Tuple class template.