OpenABF 2.1.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const > Class Template Reference

Iterator for the edges of a face. More...

Inheritance diagram for OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >:
[legend]

Public Types

using difference_type = std::size_t
 
using value_type = EdgePtr
 
using pointer = std::conditional_t< Const, value_type const *, value_type * >
 
using reference = std::conditional_t< Const, value_type const &, value_type & >
 
using iterator_category = std::input_iterator_tag
 

Public Member Functions

 FaceIterator ()=default
 
 FaceIterator (const EdgePtr &head, const EdgePtr &current)
 
template<bool Const_ = Const>
std::enable_if_t< Const_, referenceoperator* () const
 
template<bool Const_ = Const>
std::enable_if_t< not Const_, referenceoperator* ()
 
auto operator== (const FaceIterator &other) const -> bool
 
auto operator!= (const FaceIterator &other) const -> bool
 
auto operator++ () -> FaceIterator &
 

Private Attributes

EdgePtr head_
 
EdgePtr current_
 

Detailed Description

template<typename T, std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
class OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >

Iterator for the edges of a face.

Template Parameters
ConstIf true, is a const iterator

Member Typedef Documentation

◆ difference_type

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
using OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::difference_type = std::size_t

Difference type

◆ iterator_category

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
using OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::iterator_category = std::input_iterator_tag

Iterator category

◆ pointer

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
using OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::pointer = std::conditional_t<Const, value_type const*, value_type*>

Pointer type

◆ reference

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
using OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::reference = std::conditional_t<Const, value_type const&, value_type&>

Reference type

◆ value_type

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
using OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::value_type = EdgePtr

Value type

Constructor & Destructor Documentation

◆ FaceIterator() [1/2]

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::FaceIterator ( )
default

Default constructor == End iterator

◆ FaceIterator() [2/2]

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::FaceIterator ( const EdgePtr head,
const EdgePtr current 
)
inlineexplicit

Construct from head of triangle and current edge

Member Function Documentation

◆ operator!=()

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
auto OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::operator!= ( const FaceIterator< Const > &  other) const -> bool
inline

Inequality operator

◆ operator*() [1/2]

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
template<bool Const_ = Const>
std::enable_if_t< not Const_, reference > OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::operator* ( )
inline

Dereference operator

◆ operator*() [2/2]

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
template<bool Const_ = Const>
std::enable_if_t< Const_, reference > OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::operator* ( ) const
inline

Dereference operator

◆ operator++()

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
auto OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::operator++ ( ) -> FaceIterator&
inline

Increment operator

◆ operator==()

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
auto OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::operator== ( const FaceIterator< Const > &  other) const -> bool
inline

Equality operator

Member Data Documentation

◆ current_

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
EdgePtr OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::current_
private

Current edge pointer

◆ head_

template<typename T , std::size_t Dim = 3, typename VertexTraits = traits::DefaultVertexTraits<T>, typename EdgeTraits = traits::DefaultEdgeTraits<T>, typename FaceTraits = traits::DefaultFaceTraits<T>>
template<bool Const = false>
EdgePtr OpenABF::HalfEdgeMesh< T, Dim, VertexTraits, EdgeTraits, FaceTraits >::FaceIterator< Const >::head_
private

Pointer to beginning of face