Units / boolean
boolean.merge_p5 partial
- Layer
- 55
- Upstream lines
- 475
- Functions
- 1
- Rust module
boolean::merge::p5
Source: crates/solidcore/src/boolean/merge/p5.rs
Upstream: source/SMLib/src/SmMerge.cpp
Notes
PARTIAL (PR #161): 140 cases, 108 bit-identical passes, zero failures, 32 deferred on query.brep (SmBrep::Point3DClassify); no absolute floors. ProcessWiresAndShellVertices ported with explicit operands, caller-owned marks and shared mutable mate maps; real SmMerge/Relate oracle on native-order raw graphs, all 11 operations, reversed/shared marks, mapped face edges, closed/sub-domain/tiny/huge wires, isolated vertices, and solid box fixtures. Deletion and edge-copy adapters remain Unported in topology.brep_p4 and boolean.merge_p2; vertex copies delegate to boolean.merge_p1; no attached Brep cache yet. No incoming UNPORTED back-edges. Known UB-1 part-container inputs rejected before C++; guard regression included. Review regressions: unmated marked wires pass for the seven non-keep operations; null keep entries excluded only for Union/Intersection/Merge/PartialMerge; nonidentity mates preserve order; both runners reject duplicate Relate targets; generated operands, marks and mate permutations vary independently. Mutable bidirectional relation state is shared with the copy adapter. 1 fns; largest: SmMerge::ProcessWiresAndShellVertices; unit-SCC #22 (220 units); 105 upstream test entry points reach this unit PR #163 wires MergeVertex to boolean.merge_p1, shares mutable topology_intersector::p1::Relations with both operand directions, and passes the notification store/context. Newly created mates wait on full intersector Relate; classification remains the first deferred dependency in existing cases. TOUCHED by boolean.topology_intersector_p1 (PR #146): process_wires_and_shell_vertices takes other: &mut Brep (merge_vertex -> relate_vertices raises both vertex tolerances; upstream mutates its non-const m_pOther member); runner and tests pass it mutably.
Difftest
- Cases
- 140
- Passed
- 108
- Deferred
- 32
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
query.brep claimed | 32 |
Report JSON (per-case results)
Dependencies
Depends on: boolean.merge_p1 partial boolean.merge_p2 todo boolean.topology_intersector_p1 partial geom.object partial intersect.point_class partial topology.edge partial
Soft dependencies: curve.curve_p2 green geom.a_object partial geom.extent1d green geom.tol green geom.vector3d green query.brep claimed topology.brep_cache partial topology.brep_p1 claimed topology.brep_p4 claimed topology.edgeuse_p1 partial topology.face_p2 partial topology.shell partial topology.topology green topology.topology_traverser partial topology.vertex partial
Dependents: boolean.merge_p3 todo boolean.merge_p4 todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmMerge::ProcessWiresAndShellVertices | SmMerge.cpp:7239 | 475 | [process_wires_and_shell_vertices] |
Module file-header table (2 rows)
| Rust | Upstream |
|---|---|
[process_wires_and_shell_vertices] | SmMerge::ProcessWiresAndShellVertices |
[Relations] | shared bidirectional mate lookups from m_vTI |
Upstream tests reaching this unit
prog_test:my_test_bbu, SM_API_test:TestSmMaterialCensus, SM_API_test:TestSmPiecewiseMerge, SM_API_test:TestSmBooleanLists, SM_API_test:TestKernelMergeBrepsInvalidInput, SM_API_test:TestApiMergeBrepsInvalidOperation