16 using VertId = GraphVertId;
17 using EdgeId = GraphEdgeId;
19 using VertBitSet = GraphVertBitSet;
20 using EdgeBitSet = GraphEdgeBitSet;
22 using Neighbours = std::vector<EdgeId>;
23 using NeighboursPerVertex = Vector<Neighbours, VertId>;
30 assert( a ==
v0 || a ==
v1 );
35 assert( what != with );
36 assert( (
v0 == what &&
v1 != with ) || (
v1 == what &&
v0 != with ) );
52 [[nodiscard]]
size_t vertSize()
const {
return neighboursPerVertex_.
size(); }
55 [[nodiscard]]
const VertBitSet & validVerts()
const {
return validVerts_; }
58 [[nodiscard]]
bool valid( VertId v )
const {
return validVerts_.test( v ); }
61 [[nodiscard]]
size_t edgeSize()
const {
return endsPerEdge_.
size(); }
64 [[nodiscard]]
const EdgeBitSet & validEdges()
const {
return validEdges_; }
67 [[nodiscard]]
bool valid( EdgeId e )
const {
return validEdges_.test( e ); }
70 [[nodiscard]]
const Neighbours & neighbours( VertId v )
const {
return neighboursPerVertex_[v]; }
73 [[nodiscard]]
const EndVertices & ends( EdgeId e )
const {
return endsPerEdge_[e]; }
76 [[nodiscard]]
MRMESH_API EdgeId findEdge( VertId a, VertId b )
const;
79 [[nodiscard]]
bool areNeighbors( VertId a, VertId b )
const {
return findEdge( a, b ).
valid(); }
83 MRMESH_API void merge( VertId remnant, VertId dead, std::function<
void( EdgeId remnant, EdgeId dead )> onMergeEdges );
89 VertBitSet validVerts_;
90 EdgeBitSet validEdges_;
92 NeighboursPerVertex neighboursPerVertex_;
93 EndsPerEdge endsPerEdge_;
#define MRMESH_API
Definition MRMeshFwd.h:80
unsafe void construct(MR._ByValue_Vector_StdVectorMRGraphEdgeId_MRGraphVertId neighboursPerVertex, MR._ByValue_Vector_MRGraphEndVertices_MRGraphEdgeId endsPerEdge)
unsafe void merge(MR.GraphVertId remnant, MR.GraphVertId dead, MR.Std._ByValue_Function_VoidFuncFromMRGraphEdgeIdMRGraphEdgeId onMergeEdges)
std::size_t size() const
Definition MRVector.h:51
Definition MRCameraOrientationPlugin.h:8
readonly unsafe bool valid()
VertId v1
Definition MRGraph.h:27
VertId otherEnd(VertId a) const
Definition MRGraph.h:28
VertId v0
Definition MRGraph.h:27
void replaceEnd(VertId what, VertId with)
Definition MRGraph.h:33
auto operator<=>(const EndVertices &) const =default