20 #ifndef ANTKEEPER_GEOM_BREP_VERTEX_HPP
21 #define ANTKEEPER_GEOM_BREP_VERTEX_HPP
34 class brep_element_container;
70 m_edge = m_edge->m_vertex_next[m_edge->
vertices()[1] == m_vertex];
84 m_edge = m_edge->m_vertex_previous[m_edge->
vertices()[1] == m_vertex];
98 return m_position == other.m_position;
103 return m_position <=> other.m_position;
108 return m_position - rhs.m_position;
114 std::ptrdiff_t m_position;
131 return m_head->m_vertex_previous[m_head->
vertices()[1] == m_vertex];
143 it.m_vertex = m_vertex;
160 it.m_vertex = m_vertex;
162 it.m_position =
static_cast<std::ptrdiff_t
>(m_size);
176 return std::make_reverse_iterator(
end());
188 return std::make_reverse_iterator(
begin());
201 [[nodiscard]]
inline constexpr
bool empty() const noexcept
207 [[nodiscard]]
inline constexpr std::size_t
size() const noexcept
235 std::size_t m_size{};
254 [[nodiscard]]
inline constexpr std::size_t
index() const noexcept
295 void clear() noexcept;
Curve segment bounded by two vertices.
constexpr const std::array< brep_vertex *, 2 > & vertices() const noexcept
Returns the pair of vertices that bound this edge.
Container for B-rep elements.
Boundary representation (B-rep) of a mesh.
void erase(brep_vertex *vertex) override
Erases a vertex and all dependent edges, loops, and faces.
brep_vertex * emplace_back() override
Appends a new vertex to the end of the container.
void clear() noexcept
Erases all vertices and their dependent edges, loops, and faces.
List of B-rep edges bounded by a common vertex.
brep_edge * back() const noexcept
Returns the last edge.
constexpr const_iterator end() const noexcept
Returns an iterator to the edge following the last edge.
std::reverse_iterator< const_iterator > const_reverse_iterator
constexpr const_reverse_iterator crend() const noexcept
Returns a reverse iterator to the edge following the last edge of the reversed list.
constexpr const_reverse_iterator rend() const noexcept
Returns a reverse iterator to the edge following the last edge of the reversed list.
void push_back(brep_edge *edge)
Appends an edge to the end of the list.
void remove(brep_edge *edge)
Removes an edge from the list.
constexpr const_iterator cbegin() const noexcept
Returns an iterator to the first edge.
constexpr const_iterator begin() const noexcept
Returns an iterator to the first edge.
constexpr std::size_t size() const noexcept
Returns the number of edges in the list.
constexpr bool empty() const noexcept
Returns true if the list is empty, false otherwise.
constexpr const_reverse_iterator rbegin() const noexcept
Returns a reverse iterator to the first edge of the reversed list.
constexpr const_reverse_iterator crbegin() const noexcept
Returns a reverse iterator to the first edge of the reversed list.
brep_edge * front() const noexcept
Returns the first edge.
constexpr const_iterator cend() const noexcept
Returns an iterator to the edge following the last edge.
constexpr std::size_t index() const noexcept
Returns the index of this vertex in the mesh vertex array.
constexpr const brep_vertex_edge_list & edges() const noexcept
Returns the list of edges bounded by this vertex.
bool operator==(const const_iterator &other) const noexcept
constexpr value_type operator->() const noexcept
const_iterator operator--(int) noexcept
const_iterator & operator++() noexcept
const_iterator operator++(int) noexcept
difference_type operator-(const const_iterator &rhs) const noexcept
std::ptrdiff_t difference_type
constexpr value_type operator*() const noexcept
std::weak_ordering operator<=>(const const_iterator &other) const noexcept
const_iterator & operator--() noexcept
std::bidirectional_iterator_tag iterator_concept
std::bidirectional_iterator_tag iterator_category