Units / geom
geom.tree partial
- Layer
- 1
- Upstream lines
- 1,259
- Functions
- 34
- Rust module
geom::tree
Source: crates/solidcore/src/geom/tree.rs
Upstream: source/SMLib/inc/SmTree.h, source/SMLib/src/SmTree.cpp
Notes
difftest: 618 cases, 611 bit-identical, 0 failed, 7 deferred (nurbs.b_spline_surface_p1 6, surface.surface_cache_p1 1); max_rel_err=0; no absolute floors; 34 fns; largest: SmTree::AddToSpatialTree, SmTree::RmFromSpatialTree, SmTreeNode::PropagateToParents, SmTreeNode::GetBotSide; cycle back-edges (call into later units; stub or co-port): geom.vector3d(5), geom.object(2), surface.surface_cache_p1(2), curve.curve_cache(1), nurbs.b_spline_surface_p1(1), surface.surface_p2(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; CO-PORTED in intersect.topology_solver_p2 (PR #60): Tree::map_objects -> stable borrowed shape-tree handle conversion; preserves boxes, links, decomposition data and order; regression tests cover neighbors, classification, ownership and mapping errors
Difftest
- Cases
- 618
- Passed
- 611
- Deferred
- 7
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
nurbs.b_spline_surface_p1 green | 6 |
surface.surface_cache_p1 green | 1 |
Report JSON (per-case results)
Dependencies
Depends on: geom.extent3d green
Soft dependencies: none
Dependents: blend.hcr claimed curve.curve_p1 partial geom.object partial heal.stitch_p1 claimed heal.stitch_p2 claimed intersect.topology_solver_p1 partial intersect.topology_solver_p2 partial surface.surface_cache_p1 green surface.surface_cache_p3 partial surface.surface_p1 partial surface.surface_p7 partial surface.surface_p8 partial topology.brep_cache partial
Soft dependents: curve.curve_cache green curve.curve_p2 green curve.curve_p3 green curve.curve_p7 green curve.curve_p8 green curve.curve_p9 green geom.global_solver partial geom.grid partial intersect.adv_surface_intersector partial intersect.curve_class_p9 partial intersect.ray_tracer partial intersect.surface_intersector_p4 partial intersect.surface_intersector_p5 partial intersect.surface_tracer partial query.tess partial surface.surface_cache_p2 partial surface.surface_p10 partial surface.surface_p11 partial surface.surface_p2 partial surface.surface_p9 partial surface.trim_srf_cache partial topology.brep_p2 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmObjectList::FindObject | SmTree.h:125 | 23 | [Tree::find_object] |
SmTreeNode::SmTreeNode | SmTree.h:199 | 8 | [TreeNode], [TreeNode::new] |
SmTreeNode::GetBoundingBox | SmTree.h:225 | 1 | [TreeNode::bounding_box] |
SmTree::SmTree | SmTree.h:800 | 7 | [Tree] |
SmTree::~SmTree | SmTree.h:825 | 1 | Drop (implicit) |
SmTree::GetOwner | SmTree.h:831 | 1 | [Tree::owner] |
SmTree::SetOwnerObject | SmTree.h:835 | 1 | [Tree::set_owner_object] |
SmTree::GetTopNode | SmTree.h:881 | 1 | [Tree::top_node] |
SmTree::GetType | SmTree.h:1095 | 1 | [Tree::TYPE], [Tree::type_code] |
SmTree::GetTypeString | SmTree.h:1095 | 1 | [Tree::type_string] |
SmTree::SmTree | SmTree.cpp:110 | 44 | [Tree] |
SmTree::SmTree | SmTree.cpp:164 | 31 | [Tree] |
SmTreeNode::GetOwnerObject | SmTree.cpp:204 | 2 | [Tree::node_owner_object] |
SmTree::GetOwnerObject | SmTree.cpp:215 | 23 | [Tree::owner_object] |
SmTree::AddToSpatialTree | SmTree.cpp:255 | 287 | [Tree::add_to_spatial_tree] |
SmTree::RmFromSpatialTree | SmTree.cpp:555 | 63 | [Tree::rm_from_spatial_tree] |
SmTree::GetAllTreeNodes | SmTree.cpp:624 | 10 | [Tree::all_tree_nodes] |
SmTree::FindNode | SmTree.cpp:1692 | 39 | [Tree::find_node] |
SmTreeNode::GetObjectList | SmTree.cpp:1866 | 18 | [Tree::node_object_list] |
SmTree::GetObjectList | SmTree.cpp:1891 | 35 | [Tree::object_list] |
SmTree::GetObjectsInBox | SmTree.cpp:1932 | 53 | [Tree::objects_in_box] |
SmTree::IntersectsBox | SmTree.cpp:2053 | 28 | [Tree::intersects_box] |
SmTree::IsKindOf | SmTree.cpp:2520 | 4 | [Tree::is_kind_of] |
SmTreeNode::GetFirstBezierPatch | SmTree.cpp:2654 | 53 | [Tree::first_bezier_patch] |
SmTreeNode::PropagateToParents | SmTree.cpp:2749 | 63 | [Tree::propagate_to_parents] |
SmTreeNode::GetNeighbors | SmTree.cpp:2921 | 25 | [Tree::neighbors] |
SmTreeNode::GetLeftNeighbors | SmTree.cpp:3027 | 48 | [Tree::left_neighbors] .. [Tree::top_neighbors] |
SmTreeNode::GetRightNeighbors | SmTree.cpp:3081 | 48 | |
SmTreeNode::GetBotNeighbors | SmTree.cpp:3135 | 48 | |
SmTreeNode::GetTopNeighbors | SmTree.cpp:3189 | 48 | [Tree::left_neighbors] .. [Tree::top_neighbors] |
SmTreeNode::GetRightSide | SmTree.cpp:3244 | 61 | side (private) |
SmTreeNode::GetLeftSide | SmTree.cpp:3312 | 61 | side (private) |
SmTreeNode::GetTopSide | SmTree.cpp:3380 | 61 | side (private) |
SmTreeNode::GetBotSide | SmTree.cpp:3448 | 61 | side (private) |
Module file-header table (35 rows)
| Rust | Upstream |
|---|---|
[Tree] | SmTree |
[Tree::new] | SmTree(SmObject*) |
[Tree::from_point] | SmTree(const SmPoint3d&, double, SmTreeNode*, SmObjectList*) |
[Tree::new_spatial] | SmTree(const SmExtent3d&, ULONG, ULONG) |
Drop (implicit) | ~SmTree |
[Tree::owner] | SmTree::GetOwner, SmTreeNode::GetOwner |
[Tree::set_owner_object] | SmTree::SetOwnerObject |
[Tree::owner_object] | SmTree::GetOwnerObject |
[Tree::node_owner_object] | SmTreeNode::GetOwnerObject |
[Tree::map_objects] | Rust handle adapter (no numerical changes) |
[Tree::top_node] | SmTree::GetTopNode |
[Tree::TYPE], [Tree::type_code] | SmTree::GetType (SmTree_TYPE) |
[Tree::type_string] | SmTree::GetTypeString |
[Tree::is_kind_of] | SmTree::IsKindOf |
[Tree::add_to_spatial_tree] | SmTree::AddToSpatialTree |
[Tree::rm_from_spatial_tree] | SmTree::RmFromSpatialTree |
[Tree::all_tree_nodes] | SmTree::GetAllTreeNodes |
[Tree::find_node] | SmTree::FindNode |
[Tree::node_object_list] | SmTreeNode::GetObjectList(SmTArray<SmObjectList*>&) |
[Tree::object_list] | SmTree::GetObjectList |
[Tree::objects_in_box] | SmTree::GetObjectsInBox |
[Tree::intersects_box] | SmTree::IntersectsBox |
[Tree::find_object] | SmObjectList::FindObject |
[Tree::first_bezier_patch] | SmTreeNode::GetFirstBezierPatch |
[Tree::propagate_to_parents] | SmTreeNode::PropagateToParents |
[Tree::neighbors] | SmTreeNode::GetNeighbors |
[Tree::left_neighbors] .. [Tree::top_neighbors] | SmTreeNode::GetLeftNeighbors .. GetTopNeighbors |
collect_neighbors (private) | the shared body of GetLeftNeighbors .. GetTopNeighbors |
side (private) | SmTreeNode::GetRightSide, GetLeftSide, GetTopSide, GetBotSide |
[TreeNode], [TreeNode::new] | SmTreeNode, SmTreeNode() |
[TreeNode::bounding_box] | SmTreeNode::GetBoundingBox |
[ObjectList] | SmObjectList |
[Tree::curve_spans], [Tree::curve_parents], [Tree::curve_aux], [Tree::curve_span], [Tree::set_curve_data], [CurveSpanRef] | the owning SmCurveCache's m_sBezMgr / m_sParentMgr and the casts of m_pData to SmBezierAux1d* / SmBezierSpan* |
[SurfaceAux] | the SmBezierAux2d fields read here (m_eSplitDir, m_bIsMarked, m_eNodeClass, m_pFace, mBA_pSurface) and the arena slot of the rest |
[AuxDataType], [NodeGeomType], [SplitDir], [NodeClass] | SmAuxDataType, SmNodeGeomType, SmSurfParamType (U/V), SmNodeClassType |
Upstream tests reaching this unit
prog_test:my_test_extent3d, prog_test:my_test_vector2d, prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join