1#ifndef TATOOINE_DETAIL_POINTSET_VERTEX_CONTAINER_H
2#define TATOOINE_DETAIL_POINTSET_VERTEX_CONTAINER_H
9template <
floating_po
int Real, std::
size_t NumDimensions>
11 :
iterator_facade<const_vertex_container_iterator<Real, NumDimensions>> {
44 [[nodiscard]]
constexpr auto equal(
53 return other.m_vh.index() -
m_vh.index();
59 constexpr auto advance(std::ptrdiff_t
const off) {
69static_assert(std::input_or_output_iterator<
70 const_vertex_container_iterator<real_number, 2>>);
72template <
floating_po
int Real, std::
size_t NumDimensions>
103 static constexpr auto cend() {
return end(); }
120 auto at(std::size_t
const i)
const {
128static_assert(std::ranges::range<const_vertex_container<real_number, 2>>);
133template <
typename Real, std::
size_t NumDimensions>
169 return other.m_vh.index() -
m_vh.index();
175 constexpr auto advance(std::ptrdiff_t
const off)
191template <
floating_po
int Real, std::
size_t NumDimensions>
245 auto at(std::size_t
const i)
const {
265static_assert(std::ranges::forward_range<vertex_container<real_number, 2>>);
268template <
typename Real, std::
size_t NumDimensions>
277template <
typename Real, std::
size_t NumDimensions>
284template <
typename Real, std::
size_t NumDimensions>
285inline constexpr auto std::ranges::enable_borrowed_range<
C++20 implementation of an iterator facade.
Definition: iterator_facade.h:154
Definition: inverse_distance_weighting_sampler.h:4
auto size(vertex_container< Real, NumDimensions > verts)
Definition: vertex_container.h:269
Definition: algorithm.h:6
auto vertices(pointset< Real, NumDimensions > const &ps)
Definition: vertex_container.h:278
Definition: vertex_container.h:11
constexpr auto equal(const_vertex_container_iterator const &other) const
Definition: vertex_container.h:44
const_vertex_container_iterator(const_vertex_container_iterator &&other) noexcept=default
constexpr auto equal(sentinel_type const) const
Definition: vertex_container.h:48
const_vertex_container_iterator(const_vertex_container_iterator const &other)=default
constexpr auto decrement()
Definition: vertex_container.h:38
constexpr auto increment()
Definition: vertex_container.h:33
constexpr auto advance(std::ptrdiff_t const off)
Definition: vertex_container.h:59
const_vertex_container_iterator(vertex_handle const vh, pointset_type const *ps)
Definition: vertex_container.h:16
pointset_type const * m_pointset
Definition: vertex_container.h:30
vertex_handle m_vh
Definition: vertex_container.h:29
constexpr auto distance_to(const_vertex_container_iterator const &other) const -> std::ptrdiff_t
Definition: vertex_container.h:51
typename pointset_type::vertex_handle vertex_handle
Definition: vertex_container.h:13
auto operator=(const_vertex_container_iterator const &other) -> const_vertex_container_iterator &=default
auto operator=(const_vertex_container_iterator &&other) noexcept -> const_vertex_container_iterator &=default
auto dereference() const
Definition: vertex_container.h:62
constexpr auto distance_to(sentinel_type const) const -> std::ptrdiff_t
Definition: vertex_container.h:55
~const_vertex_container_iterator()=default
constexpr auto at_end() const
Definition: vertex_container.h:64
const_vertex_container_iterator()=default
Definition: vertex_container.h:73
pointset_type const * m_pointset
Definition: vertex_container.h:80
auto data_container() const -> auto const &
Definition: vertex_container.h:108
auto operator[](std::size_t const i)
Definition: vertex_container.h:115
auto at(vertex_handle const i)
Definition: vertex_container.h:125
const_vertex_container(pointset_type const *ps)
Definition: vertex_container.h:83
auto cbegin() const
Definition: vertex_container.h:99
auto at(std::size_t const i) const
Definition: vertex_container.h:120
const_vertex_container(const_vertex_container const &)=default
auto data() const
Definition: vertex_container.h:111
static constexpr auto cend()
Definition: vertex_container.h:103
auto at(std::size_t const i)
Definition: vertex_container.h:123
auto operator[](vertex_handle const i) const
Definition: vertex_container.h:118
static constexpr auto end()
Definition: vertex_container.h:101
typename pointset_type::vertex_handle vertex_handle
Definition: vertex_container.h:75
auto operator[](vertex_handle const i)
Definition: vertex_container.h:119
auto operator[](std::size_t const i) const
Definition: vertex_container.h:112
auto begin() const
Definition: vertex_container.h:92
auto at(vertex_handle const i) const
Definition: vertex_container.h:124
const_vertex_container(const_vertex_container &&) noexcept=default
auto size() const
Definition: vertex_container.h:105
Definition: vertex_container.h:8
Definition: vertex_container.h:135
vertex_container_iterator(vertex_container_iterator const &other)=default
vertex_container_iterator()=default
constexpr auto decrement()
Definition: vertex_container.h:161
auto dereference() const
Definition: vertex_container.h:184
vertex_container_iterator(vertex_container_iterator &&other) noexcept=default
constexpr auto distance_to(sentinel_type const) const -> std::ptrdiff_t
Definition: vertex_container.h:171
vertex_handle m_vh
Definition: vertex_container.h:152
constexpr auto advance(std::ptrdiff_t const off) -> vertex_container_iterator &
Definition: vertex_container.h:175
auto operator=(vertex_container_iterator &&other) noexcept -> vertex_container_iterator &=default
typename pointset_type::vertex_handle vertex_handle
Definition: vertex_container.h:137
~vertex_container_iterator()=default
constexpr auto equal(vertex_container_iterator const &other) const
Definition: vertex_container.h:180
auto operator=(vertex_container_iterator const &other) -> vertex_container_iterator &=default
constexpr auto distance_to(vertex_container_iterator const &other) const -> std::ptrdiff_t
Definition: vertex_container.h:167
constexpr auto at_end() const
Definition: vertex_container.h:186
constexpr auto increment()
Definition: vertex_container.h:156
vertex_container_iterator(vertex_handle const vh, pointset_type *ps)
Definition: vertex_container.h:140
pointset_type * m_pointset
Definition: vertex_container.h:153
Definition: vertex_container.h:192
vertex_container(vertex_container &&) noexcept=default
auto begin() const
Definition: vertex_container.h:209
auto operator[](vertex_handle const i)
Definition: vertex_container.h:244
auto at(vertex_handle const i)
Definition: vertex_container.h:250
auto size() const
Definition: vertex_container.h:229
static constexpr auto end()
Definition: vertex_container.h:225
auto operator[](std::size_t const i) const
Definition: vertex_container.h:237
auto operator[](std::size_t const i)
Definition: vertex_container.h:240
auto reserve(std::size_t const n)
Definition: vertex_container.h:257
auto cbegin() const
Definition: vertex_container.h:217
auto operator[](vertex_handle const i) const
Definition: vertex_container.h:243
auto data_container() const -> auto const &
Definition: vertex_container.h:233
vertex_container(pointset_type *ps)
Definition: vertex_container.h:202
auto at(std::size_t const i) const
Definition: vertex_container.h:245
static constexpr auto cend()
Definition: vertex_container.h:227
pointset_type * m_pointset
Definition: vertex_container.h:199
typename pointset_type::vertex_handle vertex_handle
Definition: vertex_container.h:194
auto data() const
Definition: vertex_container.h:236
auto at(std::size_t const i)
Definition: vertex_container.h:248
vertex_container(vertex_container const &)=default
auto resize(std::size_t const n)
Definition: vertex_container.h:251
auto at(vertex_handle const i) const
Definition: vertex_container.h:249
Definition: pointset.h:83
Definition: pointset.h:69
auto num_vertices() const
Definition: pointset.h:229
auto at(vertex_handle const v) -> auto &
Definition: pointset.h:198
auto vertex_position_data() const -> auto const &
Definition: pointset.h:235
auto invalid_vertices() const -> auto const &
Definition: pointset.h:239
auto vertices() const
Definition: pointset.h:226
constexpr auto is_valid(vertex_handle const v) const -> bool
Definition: pointset.h:347
std::vector< pos_type > m_vertex_position_data
Definition: pointset.h:115
auto vertex_properties() const -> auto const &
Definition: pointset.h:191