solidcore

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 unitDeferred cases
nurbs.b_spline_surface_p1 green6
surface.surface_cache_p1 green1

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 functionDefined atLinesRust (from the file header)
SmObjectList::FindObjectSmTree.h:12523[Tree::find_object]
SmTreeNode::SmTreeNodeSmTree.h:1998[TreeNode], [TreeNode::new]
SmTreeNode::GetBoundingBoxSmTree.h:2251[TreeNode::bounding_box]
SmTree::SmTreeSmTree.h:8007[Tree]
SmTree::~SmTreeSmTree.h:8251Drop (implicit)
SmTree::GetOwnerSmTree.h:8311[Tree::owner]
SmTree::SetOwnerObjectSmTree.h:8351[Tree::set_owner_object]
SmTree::GetTopNodeSmTree.h:8811[Tree::top_node]
SmTree::GetTypeSmTree.h:10951[Tree::TYPE], [Tree::type_code]
SmTree::GetTypeStringSmTree.h:10951[Tree::type_string]
SmTree::SmTreeSmTree.cpp:11044[Tree]
SmTree::SmTreeSmTree.cpp:16431[Tree]
SmTreeNode::GetOwnerObjectSmTree.cpp:2042[Tree::node_owner_object]
SmTree::GetOwnerObjectSmTree.cpp:21523[Tree::owner_object]
SmTree::AddToSpatialTreeSmTree.cpp:255287[Tree::add_to_spatial_tree]
SmTree::RmFromSpatialTreeSmTree.cpp:55563[Tree::rm_from_spatial_tree]
SmTree::GetAllTreeNodesSmTree.cpp:62410[Tree::all_tree_nodes]
SmTree::FindNodeSmTree.cpp:169239[Tree::find_node]
SmTreeNode::GetObjectListSmTree.cpp:186618[Tree::node_object_list]
SmTree::GetObjectListSmTree.cpp:189135[Tree::object_list]
SmTree::GetObjectsInBoxSmTree.cpp:193253[Tree::objects_in_box]
SmTree::IntersectsBoxSmTree.cpp:205328[Tree::intersects_box]
SmTree::IsKindOfSmTree.cpp:25204[Tree::is_kind_of]
SmTreeNode::GetFirstBezierPatchSmTree.cpp:265453[Tree::first_bezier_patch]
SmTreeNode::PropagateToParentsSmTree.cpp:274963[Tree::propagate_to_parents]
SmTreeNode::GetNeighborsSmTree.cpp:292125[Tree::neighbors]
SmTreeNode::GetLeftNeighborsSmTree.cpp:302748[Tree::left_neighbors] .. [Tree::top_neighbors]
SmTreeNode::GetRightNeighborsSmTree.cpp:308148
SmTreeNode::GetBotNeighborsSmTree.cpp:313548
SmTreeNode::GetTopNeighborsSmTree.cpp:318948[Tree::left_neighbors] .. [Tree::top_neighbors]
SmTreeNode::GetRightSideSmTree.cpp:324461side (private)
SmTreeNode::GetLeftSideSmTree.cpp:331261side (private)
SmTreeNode::GetTopSideSmTree.cpp:338061side (private)
SmTreeNode::GetBotSideSmTree.cpp:344861side (private)
Module file-header table (35 rows)
RustUpstream
[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