MeshLib C++ Docs
Loading...
Searching...
No Matches
MREdgeIterator.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshTopology.h"
4#include "MRIteratorRange.h"
5#include <iterator>
6
7namespace MR
8{
11
12
15{
16public:
17 using iterator_category = std::forward_iterator_tag;
18 using value_type = UndirectedEdgeId;
19
21 UndirectedEdgeIterator( const MeshTopology & topology ) : topology_( &topology )
22 {
23 if ( topology_->undirectedEdgeSize() == 0 )
24 return;
25 edge_ = UndirectedEdgeId{0};
26 if ( topology_->isLoneEdge( edge_ ) )
28 }
31
33 {
34 assert( edge_.valid() );
35 for (;;)
36 {
37 ++edge_;
38 if ( edge_ >= topology_->undirectedEdgeSize() )
39 {
40 edge_ = UndirectedEdgeId{};
41 break;
42 }
43 if ( !topology_->isLoneEdge( edge_ ) )
44 break;
45 }
46 return * this;
47 }
48 UndirectedEdgeId operator *( ) const { return edge_; }
49
50private:
51 const MeshTopology * topology_ = nullptr;
52 UndirectedEdgeId edge_;
53};
54
56 { return *a == *b; }
57
59 { return *a != *b; }
60
63
64}
Definition MRMeshTopology.h:22
The iterator to find all not-lone undirected edges in the mesh.
Definition MREdgeIterator.h:15
MRMESH_API bool operator==(const BitSet &a, const BitSet &b)
compare that two bit sets have the same set bits (they can be equal even if sizes are distinct but la...
std::forward_iterator_tag iterator_category
Definition MREdgeIterator.h:17
bool operator!=(const Color &a, const Color &b)
Definition MRColor.h:104
IteratorRange< UndirectedEdgeIterator > undirectedEdges(const MeshTopology &topology)
Definition MREdgeIterator.h:61
MRMESH_API bool isLoneEdge(EdgeId a) const
checks whether the edge is disconnected from all other edges and disassociated from all vertices and ...
UndirectedEdgeIterator & operator++()
Definition MREdgeIterator.h:32
UndirectedEdgeIterator(const MeshTopology &topology)
creates begin iterator
Definition MREdgeIterator.h:21
UndirectedEdgeIterator()=default
creates end iterator
size_t undirectedEdgeSize() const
returns the number of undirected edges (pairs of half-edges) including lone ones
Definition MRMeshTopology.h:46
UndirectedEdgeId operator*() const
Definition MREdgeIterator.h:48
UndirectedEdgeId value_type
Definition MREdgeIterator.h:18
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRIteratorRange.h:13