MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / checkValidity

Method checkValidity

source/MRMesh/MRGraph.cpp:111–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109}
110
111bool Graph::checkValidity() const
112{
113 MR_TIMER;
114
115 #define CHECK(x) { assert(x); if (!(x)) return false; }
116
117 CHECK( validVerts_.size() == neighboursPerVertex_.size() );
118 CHECK( validEdges_.size() == endsPerEdge_.size() );
119
120 for ( auto v : validVerts_ )
121 {
122 const auto & neis = neighboursPerVertex_[v];
123 CHECK( std::is_sorted( neis.begin(), neis.end() ) );
124 for ( auto e : neis )
125 {
126 CHECK( e.valid() );
127 CHECK( e < endsPerEdge_.size() );
128 CHECK( validEdges_.test( e ) );
129 const auto ends = endsPerEdge_[e];
130 CHECK( ends.v0 == v || ends.v1 == v );
131 const auto w = ends.otherEnd( v );
132 CHECK( e == findEdge( v, w ) );
133 CHECK( e == findEdge( w, v ) );
134 }
135 }
136
137 for ( auto e : validEdges_ )
138 {
139 const auto ends = endsPerEdge_[e];
140 CHECK( ends.v0 && ends.v1 );
141 CHECK( ends.v0 < ends.v1 );
142 CHECK( ends.v0 < neighboursPerVertex_.size() );
143 CHECK( validVerts_.test( ends.v0 ) );
144 CHECK( ends.v1 < neighboursPerVertex_.size() );
145 CHECK( validVerts_.test( ends.v1 ) );
146
147 CHECK( e == findEdge( ends.v0, ends.v1 ) );
148 CHECK( e == findEdge( ends.v1, ends.v0 ) );
149 }
150
151 return true;
152}
153
154} //namespace MR

Callers 6

TESTFunction · 0.45
TESTFunction · 0.45
TESTFunction · 0.45
TESTFunction · 0.45
decimateMeshFunction · 0.45
makeRegularGridMeshFunction · 0.45

Calls 6

otherEndMethod · 0.80
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
validMethod · 0.45
testMethod · 0.45

Tested by 4

TESTFunction · 0.36
TESTFunction · 0.36
TESTFunction · 0.36
TESTFunction · 0.36