Files
solvecraft/plan/closure.md
T
bherbruck a90b66e91d Call graph, in-scope closure and port plan (260 units, 65 layers)
libclang call graph over SMLib/SM_API with conservative (CHA) virtual
resolution and dead-debug-branch pruning; closure from in-scope SM_API
entry points plus the native .smb reader used by test fixtures.
plan/closure.md: files, unused code, hazards, threading.
plan/modules.toml + plan/order.md: units, deps, layers, critical path.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 14:49:09 -04:00

78 KiB

In-scope closure of SMLib for solidcore

Generated by harness/callgraph/write_closure.py (pipeline: extract.py -> build_graph.py -> plan_units.py -> write_closure.py; see harness/callgraph/README.md). Upstream commit c9c5979.

Summary

quantity value
upstream SMLib + SM_API lines (src + inc) 979541
lines inside function bodies (all) 667368
in-scope function lines (CHA closure) 392766
in-scope function lines under RTA (informational) 386862
in-scope functions (CHA) 6068
idiom-mapped lines (containers/memory/error stacks -> Rust std, not ported as units) 4863
lines assigned to port units 387903
port units / layers 260 / 65
in-scope files (>=1 reachable function) 327
files with no reachable function 163

Method

  • AST source. libclang 21 (Python bindings) over bin/cpp/compile_commands.json, i.e. the exact flags of the reference C++ build (-DNDEBUG -DNOMINMAX -DSM_GRAPHICS_CALLBACKS=1 -std=c++17, so SM_DEBUG_CODE, SM_USE_TBB, SM_USE_GLOBAL_CACHE are off; SM_GFX_CODE is on). All 224 SMLib + 13 SM_API TUs (plus the SM_API_test / prog_test TUs for test attribution) parse with zero errors.
  • Edges. Every CALL_EXPR, function/method reference (DECL_REF_EXPR/MEMBER_REF_EXPR, which also captures function pointers and callbacks), new -> constructor, delete -> destructor of the static type (and of all derived classes), and constructor -> own destructor. Template members map to their primary template by qualified name.
  • Virtual calls (conservative). An unqualified call to a virtual method reaches the method and every override in every (transitively) derived class (class-hierarchy analysis, CHA). Qualified calls (Base::f()) are non-virtual. The pip libclang bindings lack clang_getOverriddenCursors, so overrides are matched by USR method signature along the class hierarchy. RTA (dispatch only to classes whose constructor is reachable) is reported for information only; the CHA set is the plan.
  • Dead debug branches. if statements whose condition is provably false in this build are not followed: never-written locals/file statics initialised to FALSE/0 (the ubiquitous SmBoolean bDebugMe = FALSE; if (bDebugMe) {...} pattern), *Debug* flags and DebugLevel() comparisons against non-negative literals, combined with !/&&/||. 1135 such branches were pruned; they only draw/dump/print (Draw, smgfx_*, Dump, file I/O of debug snapshots).
  • Roots. The SM_API entry points listed below plus SmBrep::ReadFromFile (the native .smb/.brp reader that every prog_test and pt_TestFiles fixture goes through; needed to feed difftests).

Entry points

  • context (2): SmApiCreateContext, SmApiGetOrCreateContext
  • primitive (27): SmApiCreateArc, SmApiCreateBlendPrimitive, SmApiCreateBox, SmApiCreateCanonicalCurve, SmApiCreateCircle, SmApiCreateCone, SmApiCreateConeEllipticEnds, SmApiCreateCurve, SmApiCreateCylinder, SmApiCreateCylindricalBox, SmApiCreateEllipse, SmApiCreateHelix, SmApiCreateLine, SmApiCreateLineSegment, SmApiCreatePartialCone, SmApiCreatePartialCylinder, SmApiCreatePartialSphere, SmApiCreatePartialTorus, SmApiCreatePlanarCircle, SmApiCreatePlane, SmApiCreatePyramid, SmApiCreateRectangle, SmApiCreateRegularPolygon, SmApiCreateSphere, SmApiCreateSphereNoPole, SmApiCreateSwungPrimitive, SmApiCreateTorus
  • boolean (9): SmApiBoolean, SmApiBooleanDifference, SmApiBooleanIntersection, SmApiBooleanLists, SmApiBooleanMerge, SmApiBooleanTrees, SmApiBooleanUnion, SmApiBooleanWithOptions, SmApiMergeBreps
  • fillet (7): SmApiChamferFillet, SmApiCircularFillet, SmApiFilletEdges, SmApiFilletEdgesPerEdge, SmApiSetBevelCorners, SmApiSurfaceSurfaceFillet, SmApiVariableRadiusFillet
  • offset (2): SmApiOffsetBrepFull, SmApiShellBrepFull
  • sweep (18): SmApiCreateCurveSweep, SmApiCreateCurveSweepFromEdges, SmApiCreateCurveSweepFromFaces, SmApiCreateDraftSweep, SmApiCreateExtrude, SmApiCreateLinearSweep, SmApiCreateLinearSweepWithRepetitions, SmApiCreatePipeSweep, SmApiCreateRotationalSweep, SmApiCreateRotationalSweepWithRepetitions, SmApiCreateRuledSurface, SmApiCreateSkin, SmApiCreateSkinFromFaces, SmApiCreateSkinPrimitive, SmApiCreateSurfaceRevolution, SmApiCreateSweep, SmApiCreateSweepAlongPlanarPath, SmApiCreateTaperExtrude
  • heal (7): SmApiHealBrep, SmApiSimpleFaceStitch, SmApiStitch, SmApiStitchAdvanced, SmApiStitchIntoShell, SmApiStitchIntoSolid, SmApiUnifyNormals
  • mass (6): SmApiBrepComputeArea, SmApiBrepComputeMassProperties, SmApiBrepComputeVolume, SmApiEdgeComputeLength, SmApiFaceComputeArea, SmApiFaceComputeCentroid
  • query (29): SmApiBrepBoundingBox, SmApiBrepClosestPoint, SmApiBrepClosestPointAll, SmApiBrepDistance, SmApiBrepIsManifoldSolid, SmApiBrepRelationship, SmApiCurveClosestPoint, SmApiCurveClosestPointAll, SmApiEdgeBoundingBox, SmApiEdgeClassifyParameter, SmApiEdgeClosestPoint, SmApiEdgeParameterRange, SmApiEdgeTangent, SmApiEvaluateCurve, SmApiEvaluateSurfaceDerivatives, SmApiEvaluateSurfaceNormal, SmApiEvaluateSurfacePoint, SmApiFaceBoundingBox, SmApiFaceClassifyUV, SmApiFaceClosestPoint, SmApiFaceGetBoundaryLoops, SmApiFaceInternalPoint, SmApiFindEdge, SmApiFindFaces, SmApiGetClosestPoint, SmApiGetEdges, SmApiGetFaces, SmApiSurfaceClosestPoint, SmApiVertexGetPoint
  • copy_transform (6): SmApiBrepCopy, SmApiRotate, SmApiScale, SmApiScaleByPt, SmApiTransform, SmApiTranslate
  • fixture_io (1): SmBrep::ReadFromFile

Out of scope (not roots; reachable code is only included if an in-scope root also reaches it): SmApiTessellate, SmApiTessellateBoundaries, SmApiPoly*, SmApiDraw, SmApiReadBrepFromFile, SmApiReadPartFromFile, SmApiWriteBrepToFile, SmApiBoolean2d, SmApiBooleanWithCurves, SmApiNonManifoldBoolean, SmApiPiecewiseMerge, SmApiNonManifoldSweep, SmApiNonManifoldRotationalSweep, SmApiFilletPreview, SmApiRemoveFillet, SmApiCut, SmApiProjectAndTrim, SmApiProjectBrepOntoPlane, SmApiProjectCurve, SmApiCreateSilhouetteCurves, SmApiTurnToNurbs, SmApiCreateOffsetProfile, SmApiBrepMaterialCensus, SmApiIntersect*, SmApiCreateSurface*, SmApiCreateOffsetSurface, SmApiCreateCurveApproxPoints, SmApiCreateCurveInterpPoints, SmApiConvertToLinesAndArcs, SmApiDropCurveToSrf, SmApiLiftUVCurveFromSrf, SmApiMakeCurvesCompatible, SmApiOffsetCurve, SmApiOrderCurves, SmApiRemoveCurveKnots, SmApiEvaluateContinuity, SmApiCreatePlanarFaces, SmApiTrimProjectParallel, SmApiTrimSurfaceWith3dCurves.

Per-group closures (CHA, function lines; groups overlap heavily):

group in-scope function lines
fillet 322805
offset 306040
sweep 302841
primitive 293742
boolean 276678
heal 265327
fixture_io 218614
copy_transform 183399
query 169925
mass 168589
context 65

Note on tessellation: SmTess/NL_Tessellate are not needed by mass properties or any other in-scope operation (mass properties integrate exactly over faces, SmBrep::ComputePreciseProperties). The only reachable SmTess.cpp/SmPoly*.cpp code is CHA residue: SmAttribute::Copy dispatching to polygon/decimation attribute types, SmBrepCache::BuildTrees dispatching CalculateBoundingBox to SmCPolyFace, and SmApiTransform accepting a SmPolyBrep. Those units (query.poly, query.tess) are flagged low priority in plan/modules.toml.

Rust module totals

module units est. lines
nurbs 48 70508
surface 40 65449
topology 31 52301
intersect 25 41781
blend 22 37752
curve 25 35409
geom 29 26571
boolean 9 14122
heal 7 11877
query 10 10816
primitive 5 7956
offset 3 6605
sweep 5 5725
mass 1 1031

Smallest NLib leaf: nlib.knots (nurbs::knots, 768 lines, no dependencies): N_BasisEval, N_BasisFindSpan, N_BasisFindSpanAndMult, N_BasisGetSpanCount, N_BasisIDerivs, N_BasisIEval, N_KnotVectorFromRealArray, N_KnotVectorGetKnots, N_KnotVectorIsEndParam, N_KnotVectorIsParamOutOfBounds, N_KnotVectorIsValid, N_SetKnotIndex.

In-scope files

file lines = physical lines; fn lines = lines inside function definitions; in-scope = CHA-reachable function lines; RTA = informational. Inline header functions are counted in the header.

file file lines fn lines in-scope RTA groups
source/SMLib/src/SmSurface.cpp 35380 30144 22923 22850 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBrep.cpp 38863 34485 22307 22307 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCurve.cpp 27725 21397 18500 18246 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCurveClass.cpp 20761 18760 17541 17541 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFace.cpp 21752 17593 12314 12314 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfAdv.cpp 23322 15729 11930 11930 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletGeom.cpp 13875 11986 10987 10987 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceIntersector.cpp 8698 7941 7580 7580 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmMerge.cpp 7862 7172 7164 7164 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmFilletSolver.cpp 9252 8288 7047 7047 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTopologyIntersector.cpp 9367 8445 6518 6518 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPrimitiveCreation.cpp 8127 7412 6408 6408 boolean,offset,primitive,sweep
source/SMLib/src/SmProtoTopology.cpp 8181 6815 5831 5831 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletCorner.cpp 8872 7993 5524 5524 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfTool.cpp 13297 8306 5518 5518 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCone.cpp 6103 5619 5280 5280 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBSplineCurve.cpp 8242 6659 4936 4936 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfacePointSolve.cpp 5968 5043 4935 4935 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceCache.cpp 7092 5807 4846 4846 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceDropLib.cpp 6943 5526 4620 4620 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvFit.cpp 20046 9189 4527 4527 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmHealData.cpp 7528 6579 4505 4505 fixture_io,heal
source/SMLib/src/SmSurfOfRevolution.cpp 6817 5405 4496 4496 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletExecutive.cpp 6172 5524 4316 4316 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletStandardSolver.cpp 4900 4328 4296 3933 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBSplineSurfaceNLib.cpp 8991 7715 3965 3965 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmOffsetExecutive.cpp 4405 4106 3826 3826 offset
source/SMLib/src/SmGeomUtility.cpp 7165 5695 3795 3795 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmEdgeuse.cpp 6692 5610 3773 3773 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmStitch.cpp 4190 3902 3754 3754 boolean,fillet,fixture_io,heal,offset,primitive,sweep
source/SMLib/src/NL_CrvAdv.cpp 13997 5723 3753 3753 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmEllipse.cpp 4415 3851 3521 3521 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPlane.cpp 4382 3863 3504 3504 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmVolume.cpp 10500 8410 3357 3357 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmEdge.cpp 8227 6480 3289 3289 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfOfExtrusion.cpp 4728 3956 3274 3274 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvTool.cpp 5583 3850 3119 3119 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBSplineSurface.cpp 6530 5519 3115 3115 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTopologySolver.cpp 3467 3087 3023 2970 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCompositeCurve.cpp 4448 3803 2970 2966 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSphere.cpp 3959 3453 2854 2854 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTrimmingTools.cpp 4718 3853 2854 2854 boolean,copy_transform,fillet,mass,offset,primitive,sweep
source/SMLib/src/SmBSplineCurveNLib.cpp 4907 4097 2794 2794 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmOffsetGeometryCreation.cpp 2796 2681 2640 2565 offset
source/SMLib/src/NL_SrfNurb.cpp 6026 3111 2556 2556 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_Math.cpp 11885 6593 2421 2421 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTopologySweep.cpp 2727 2457 2340 2340 boolean,fillet,fixture_io,heal,offset,primitive,sweep
source/SMLib/src/SmNurbsCrv.cpp 3061 2511 2200 2200 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceDropCurve.cpp 2246 2033 2013 2013 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_Util.cpp 8860 5792 1982 1982 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPoly.cpp 27402 23619 1907 1631 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceTracer.cpp 2204 1965 1880 1880 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvNurb.cpp 7087 3593 1879 1879 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmHCR.cpp 2305 2052 1873 1873 primitive,sweep
source/SMLib/src/SmLine.cpp 2666 2051 1858 1858 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmOffsetSurface.cpp 2382 2059 1773 1773 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmGlobalSolver.cpp 1961 1777 1764 1764 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_BasisBasic.cpp 3742 2423 1728 1728 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletIntersector.cpp 1864 1725 1705 1705 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/NL_CrvBasic.cpp 6464 3648 1698 1698 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCrvOnSurf.cpp 2455 2064 1696 1696 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_FuncsAdv.cpp 9913 4088 1676 1676 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmAdvSurfaceIntersector.cpp 1836 1665 1645 1645 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmRotationalSweepGeometry.cpp 1742 1556 1541 1541 primitive,sweep
source/SMLib/src/SmPseudoBox.cpp 2562 2005 1499 1463 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBrepData.cpp 6560 5251 1464 1464 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiBrep.cpp 2633 2201 1454 1454 boolean,fillet,heal,offset,sweep
source/SMLib/src/SmCurveCache.cpp 2140 1775 1453 1453 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmVertexuse.cpp 3347 2704 1405 1405 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfFit.cpp 19183 12468 1359 1359 boolean,copy_transform,fillet,heal,offset,primitive,sweep
source/SMLib/src/NL_SrfBasic.cpp 6513 3887 1288 1288 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSolutionArray.cpp 2236 1812 1265 1265 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmRayTracer.cpp 2042 1751 1244 1244 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmLocalSolve1d.cpp 1322 1243 1243 1243 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFilletCustomSolver.cpp 1399 1258 1233 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBSplineVolume.cpp 3864 3048 1220 201 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmGap.cpp 5776 3425 1219 808 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTree.cpp 3937 2261 1214 1214 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmNurbsSrf.cpp 2399 2076 1188 1188 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTorus.cpp 1925 1666 1171 1171 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_Bezier.cpp 5923 3800 1154 1154 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_Geom.cpp 11093 6913 1117 1117 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFaceProps.cpp 2916 2434 1103 1103 fillet,fixture_io,heal
source/SMLib/src/SmLoop.cpp 1885 1627 1099 1099 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiQueries.cpp 1513 1134 1095 1095 copy_transform,mass,query
source/SMLib/src/SmExtent3d.cpp 2081 1630 1082 1063 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiPrimitives.cpp 1373 1139 1060 1060 primitive,sweep
source/SMLib/src/NL_Iges.cpp 4406 2317 1055 1055 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSurfaceSilhouette.cpp 1128 1011 978 912 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPolarBox.cpp 1663 1421 971 971 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTArray.h 2400 1255 965 965 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTrimSrfCache.cpp 1150 991 964 964 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBendVolume.cpp 3854 2886 934 934 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCrvInVolume.cpp 1691 1397 932 932 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvApprox.cpp 5488 2811 908 908 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmUnbendVolume.cpp 3179 2497 884 884 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_FuncsBasic.cpp 3774 1644 859 859 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmPointClass.cpp 1594 1276 839 839 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmGrid.cpp 1490 1209 833 833 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmConic.cpp 990 873 825 825 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTess.cpp 14830 12594 822 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmExtent1d.cpp 1330 924 819 819 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTransSweepGeometry.cpp 978 829 816 816 primitive,sweep
source/SMLib/src/SmLocalSolveNd.cpp 1416 812 812 812 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvCommon.cpp 2233 1005 803 803 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmVertex.cpp 3634 2806 801 801 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTopologyTraverser.cpp 2181 1857 782 782 boolean,fillet,fixture_io,heal,offset,primitive,sweep
source/SMLib/src/SmMatrix.cpp 2548 2274 775 775 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmAttribute.cpp 1954 1522 767 657 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSrfInVolume.cpp 1737 1343 762 762 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmExtent2d.cpp 1859 1339 735 735 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_CrvGeom.cpp 2470 2024 729 729 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmVector3d.h 1350 787 712 712 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiCurves.cpp 1415 1153 681 681 primitive,query
source/SMLib/src/SmPointSet.cpp 2559 2163 678 639 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmShell.cpp 2144 1720 674 674 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfCommon.cpp 2236 661 661 661 boolean,copy_transform,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmAObject.cpp 1090 815 635 635 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTol.cpp 1861 849 635 635 boolean,context,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTwistVolume.cpp 2622 2121 633 633 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfOffset.cpp 1290 613 613 613 boolean,copy_transform,fillet,offset,primitive,sweep
source/SMLib/src/SmTransform.cpp 2363 1871 603 603 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmHashTable.h 2838 1766 593 593 fixture_io,heal
source/SMLib/src/SmLoopuse.cpp 1900 1595 569 569 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmProjectedCurve.cpp 1019 777 562 562 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmOffsetCurve.cpp 737 592 477 477 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmHyperbola.cpp 813 628 459 459 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmAxis2Placement.cpp 1038 769 450 450 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmParabola.cpp 777 598 432 432 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmVector3d.cpp 965 745 405 405 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPeriodicExtent1d.cpp 1412 1107 399 399 fillet,fixture_io,heal
source/SMLib/src/SmPolynomial.cpp 451 386 386 386 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBrepCache.cpp 661 547 384 142 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmAssertArray.cpp 2590 1985 368 368 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_BasisAdv.cpp 1696 498 361 361 boolean,copy_transform,fillet,heal,offset,primitive,sweep
source/SMLib/src/NL_CrvOffset.cpp 1591 346 346 346 boolean,copy_transform,fillet,offset,primitive,sweep
source/SMLib/src/SmDatabaseIO.cpp 682 602 346 346 fixture_io
source/SMLib/src/NL_FrameBasic.cpp 2458 387 336 336 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmHermiteCurve.cpp 823 623 330 330 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTools.cpp 429 326 326 326 boolean,fillet,fixture_io,heal,offset,primitive,query,sweep
source/SMLib/src/SmIntegrator.cpp 889 727 325 325 boolean,fillet,fixture_io,heal,mass,offset,primitive,sweep
source/SMLib/src/SmTangentField.cpp 599 471 315 315 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmBSplineVolumeNLib.cpp 2247 566 310 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmIsoCurve.cpp 457 350 304 304 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfPoly.cpp 525 383 293 293 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmShape.cpp 387 321 291 291 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCircle.cpp 567 390 290 290 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiSurfaces.cpp 734 520 284 284 query,sweep
source/SMLib/inc/SmSurface.h 2849 384 263 261 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmEdgeProps.cpp 839 715 260 260 fixture_io,heal
source/SMLib/inc/SmGap.h 2170 875 256 210 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmLoopProps.cpp 1131 915 253 253 fillet,fixture_io,heal
source/SMLib/inc/SmVector2d.h 614 311 244 244 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmOwningTopology.h 470 308 236 236 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmMessages.cpp 801 465 223 223 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmFaceuse.cpp 518 354 220 220 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiGeneral.cpp 741 570 214 214 boolean,context,copy_transform,fillet,heal,offset,primitive,sweep
source/SMLib/src/NL_Spiral.cpp 499 324 209 209 primitive
source/SMLib/inc/SmTopologySolver.h 731 228 206 206 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmObject.cpp 1015 706 203 203 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSTEPSurface.cpp 363 262 192 192 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmContext.cpp 612 285 185 185 boolean,context,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTopology.cpp 648 436 184 184 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmNurbsVol.cpp 1338 1231 183 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmMemBlockMgr.h 468 230 176 176 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTList.h 437 272 175 175 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCurveBoundedSurface.cpp 835 599 170 170 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPoly.h 3365 529 169 133 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTol.h 1047 198 156 156 boolean,context,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCurveBoundedSurface.h 301 163 154 154 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmVertexProps.cpp 596 476 154 154 fixture_io,heal
source/SMLib/inc/SmAttribute.h 1436 312 153 120 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmVolume.h 2994 299 147 146 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmTrackTopologyChanges.cpp 737 626 146 146 fixture_io,heal
source/SMLib/src/SmThreadLocalStorage.cpp 1044 805 145 145 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCurve.h 1408 242 142 142 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmContext.h 649 159 141 141 boolean,context,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiFillets.cpp 246 192 140 140 fillet
source/SMLib/src/SmCylinder.cpp 645 461 133 133 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmRelation.h 381 212 132 132 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletExecutive.h 901 151 127 127 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmProtoTopology.h 957 148 125 125 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfSymbol.cpp 5295 1214 122 122 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmRegion.cpp 645 452 121 121 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletSolver.h 768 146 117 117 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSAGObject.cpp 335 194 117 63 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCacheMgr.cpp 1374 119 114 114 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmHealProbArray.h 959 398 113 113 fixture_io,heal
source/SMLib/src/SmVector2d.cpp 349 235 95 95 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSweepGeometryCreation.h 195 115 90 90 primitive,sweep
source/SMLib/inc/SmMapPtrToPtr.h 476 339 85 78 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/NL_SrfGeom.cpp 2940 2186 85 85 boolean,copy_transform,fillet,offset,primitive,sweep
source/SMLib/inc/SmCurveClass.h 893 111 80 80 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmExtentNd.cpp 122 96 80 80 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTransform.h 915 188 78 78 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCompositeCurve.h 550 120 75 72 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletGeom.h 769 101 74 74 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmMath.cpp 163 93 71 71 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmMemory.cpp 300 127 61 61 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPlane.h 588 100 57 57 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSolutionArray.h 448 60 54 54 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmHermiteCurve.h 232 69 53 53 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmExtentNd.h 140 52 51 51 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLocalSolve1d.h 329 80 51 51 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/NLI_Math.h 79 48 48 48 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLocalSolveNd.h 378 54 48 48 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSurfaceCache.h 1049 78 46 46 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTrackTopologyChanges.h 416 128 46 46 fixture_io,heal
source/SMLib/inc/SmTree.h 1102 244 45 44 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmMemory.h 270 102 44 44 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPolyDecimate.h 518 87 44 10 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmCopyBrepMap.cpp 110 72 44 44 boolean,copy_transform,fillet,offset,primitive,sweep
source/SMLib/inc/SmGrid.h 529 70 43 43 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmMatrix.h 296 101 41 41 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPointClass.h 252 50 41 41 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmExtent3d.h 218 52 40 40 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPolyDecimate.cpp 4302 3624 38 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmMapTypeToType.h 1666 1146 37 29 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSurfaceIntersector.h 662 45 37 37 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletCorner.h 620 68 36 36 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmUnbendVolume.h 784 60 36 36 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBrep.h 1648 73 34 34 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmConic.h 197 50 34 34 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCrvOnSurf.h 372 43 32 32 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmExtent2d.h 264 49 31 31 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFaceProps.h 447 43 30 30 fixture_io,heal
source/SMLib/inc/SmAxis2Placement.h 258 42 29 29 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletStandardSolver.h 397 65 29 27 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLoopuse.h 162 33 29 29 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmObject.h 339 48 29 29 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmRegion.h 186 31 29 29 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmEllipse.h 524 37 27 27 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLine.h 429 30 26 26 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLoop.h 162 30 25 25 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTopologySweep.h 312 46 25 25 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmEdgeuse.h 408 36 24 24 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmExtent1d.h 177 29 24 24 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmLoopProps.h 351 64 24 24 fixture_io,heal
source/SMLib/inc/SmTrimmingTools.h 542 29 24 24 fillet
source/SMLib/inc/SmVertexuse.h 318 41 24 24 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmVertex.h 359 33 23 23 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmStitch.h 247 22 22 22 boolean,fillet,fixture_io,heal,offset,primitive,sweep
source/SMLib/src/SmOwningTopology.cpp 293 190 22 22 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCurveCache.h 294 25 21 21 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmPolyBrepData.cpp 1398 1235 21 21 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmEdge.h 590 31 20 20 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSurfaceTracer.h 277 27 20 20 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmOffsetExecutive.h 282 21 19 19 offset
source/SMLib/inc/SmBSplineCurve.h 962 58 17 17 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCrvInVolume.h 247 23 17 17 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmDatabaseIO.h 232 74 17 17 fixture_io
source/SMLib/inc/SmSrfInVolume.h 306 27 17 17 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmString.h 166 17 17 17 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTopologyIntersector.h 538 23 17 17 boolean,fillet,heal,offset,primitive,sweep
source/SMLib/src/SmAssembly.cpp 829 623 17 13 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBucketSort.h 269 128 16 14 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPointSet.h 568 108 16 14 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTess.h 926 114 16 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTwistVolume.h 792 25 16 16 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmOffsetCurve.h 162 35 15 15 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSurfOfRevolution.h 556 30 15 15 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTypes.h 1247 69 15 15 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmAssemblyInstance.cpp 325 209 15 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmOffsetSurface.h 354 27 14 14 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPrimitiveCreation.h 556 23 14 14 offset,primitive,sweep
source/SMLib/inc/SmBSplineSurface.h 1476 89 13 13 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFaceuse.h 101 19 13 13 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmMerge.h 512 52 13 13 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTopoTypes.h 326 13 13 13 mass
source/SMLib/inc/SmTopology.h 265 51 13 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SM_API/src/SmApiHeal.cpp 40 13 13 13 heal
source/SMLib/inc/SmOffsetGeometryCreation.h 197 25 12 12 offset
source/SMLib/src/SmMapTypeToType.cpp 60 30 12 12 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmAObject.h 154 15 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBendVolume.h 760 17 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCone.h 598 23 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFace.h 1011 18 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmGlobalSolver.h 179 19 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmIntegrator.h 236 15 11 11 boolean,fillet,fixture_io,heal,mass,offset,primitive,sweep
source/SMLib/inc/SmSurfOfExtrusion.h 501 24 11 11 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmAssembly.h 190 29 10 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmHyperbola.h 162 11 9 9 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmParabola.h 147 11 9 9 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPseudoBox.h 230 22 9 9 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTorus.h 335 14 9 9 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCircle.h 188 9 8 8 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPolarBox.h 261 13 8 8 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSpaceBend.h 402 114 8 6 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSpaceUnbend.h 392 103 8 6 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCacheMgr.h 514 11 7 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmGraphicsExtern.h 1575 341 7 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPeriodicExtent1d.h 184 21 7 7 fillet,fixture_io,heal
source/SMLib/inc/SmProjectedCurve.h 184 23 7 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSphere.h 523 12 7 7 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBSplineVolume.h 802 36 6 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCylinder.h 236 9 6 6 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmIsoCurve.h 141 22 6 6 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSTEPSurface.h 139 9 6 6 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmAssertArray.h 986 72 5 5 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBrepCache.h 77 9 5 3 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmShape.h 102 17 5 5 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmLineSegClass.cpp 2628 2349 5 5 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/NL_Nurbsdef.h 438 8 4 4 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmAssemblyInstance.h 138 17 4 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmCopyBrepMap.h 52 10 4 4 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTangentField.h 167 6 4 4 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSpaceBend.cpp 2640 2371 4 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/src/SmSpaceUnbend.cpp 2471 2191 4 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletCustomSolver.h 150 8 3 3 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmFilletIntersector.h 117 12 3 3 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSAGObject.h 115 11 3 0 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmShell.h 150 5 3 3 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmBrepData.h 1128 161 2 2 fixture_io
source/SMLib/inc/SmEdgeProps.h 160 11 2 2 fixture_io,heal
source/SMLib/inc/SmHCR.h 213 11 2 2 primitive,sweep
source/SMLib/inc/SmMath.h 203 2 2 2 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmRayTracer.h 279 15 2 2 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTopologyTraverser.h 204 2 2 2 boolean,fillet,fixture_io,heal,offset,primitive,sweep
source/SMLib/inc/SmTrimSrfCache.h 157 5 2 2 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmVertexProps.h 119 12 2 2 fixture_io,heal
source/SMLib/inc/SmAdvSurfaceIntersector.h 125 6 1 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmPolyMerge.h 131 9 1 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmRotationalSweepGeometry.h 124 2 1 1 primitive,sweep
source/SMLib/inc/SmSurfaceDropCurve.h 215 10 1 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmSurfaceSilhouette.h 107 6 1 1 boolean,copy_transform,fillet,fixture_io,heal,mass,offset,primitive,query,sweep
source/SMLib/inc/SmTransSweepGeometry.h 143 3 1 1 primitive,sweep
source/SMLib/src/SmSweepGeometryCreation.cpp 19 1 1 1 primitive,sweep

Provably unused

No function in these files is reachable from any in-scope root under CHA (header-only type/macro files with no function bodies are included; they may still be needed for declarations/constants):

file lines fn lines
source/SMLib/src/NL_Tessellate.cpp 9395 7998
source/SMLib/src/NL_SrfLstSqFit.cpp 9409 6184
source/SMLib/src/SmPolySolver.cpp 3676 3334
source/SMLib/src/SmPolyIntersector.cpp 3303 2933
source/SMLib/src/SmPolyMerge.cpp 2842 2666
source/SMLib/src/SmGraphicsExtern.cpp 3663 2610
source/SMLib/src/SmFeatureExecutive.cpp 2469 1993
source/SMLib/src/SmBlendSurface.cpp 1781 1539
source/SMLib/src/NL_SrfApprox.cpp 2731 1522
source/SMLib/src/SmFilletRemoval.cpp 1552 1297
source/SMLib/src/SmCutter.cpp 1130 1029
source/SMLib/src/SmSLC.cpp 892 832
source/SMLib/src/NL_SrfShape.cpp 5938 743
source/SMLib/src/SmGraphicsOutput.cpp 763 526
source/SM_API/src/SmApiIntersectors.cpp 624 523
source/SMLib/src/SmGraphicsVertexArray.cpp 488 403
source/SMLib/src/SmCubicBezierSurface.cpp 450 394
source/SMLib/src/SmDirectedSilhouette.cpp 527 391
source/SM_API/src/SmApiPolygons.cpp 453 344
source/SMLib/inc/SmVectorNd.h 525 262
source/SMLib/src/SmFaceGrid.cpp 328 261
source/SMLib/src/SmCurveFilletExecutive.cpp 252 216
source/SM_API/src/SmApiTrimmedSurfaces.cpp 276 210
source/SMLib/inc/SmGraphicsVertexArray.h 525 194
source/SMLib/src/SmBrepCutting.cpp 198 154
source/SMLib/src/SmGraphicsNLib.cpp 773 145
source/SMLib/inc/SmHistogram.h 210 119
source/SM_API/src/SmApiImportExport.cpp 113 100
source/SMLib/src/SmCodeCount.cpp 162 93
source/SMLib/src/SmHistogram.cpp 126 92
source/SMLib/inc/SmPolyBrepData.h 350 86
source/SMLib/src/NL_CrvPoly.cpp 429 81
source/SMLib/src/SmMemBlockMgr.cpp 96 77
source/SMLib/inc/SmPolySolver.h 633 74
source/SMLib/inc/SmFeatureExecutive.h 536 63
source/SMLib/inc/SmSLC.h 261 59
source/SMLib/src/SmTypes.cpp 87 54
source/SMLib/inc/SmLineSegClass.h 312 51
source/SMLib/src/NL_FrameAdv.cpp 521 43
source/SMLib/inc/SmFaceGrid.h 122 36
source/SMLib/inc/SmCutter.h 167 32
source/SMLib/src/SmObjProps.cpp 50 24
source/SMLib/src/SmVectorNd.cpp 38 24
source/SMLib/inc/SmBlendSurface.h 335 20
source/SMLib/inc/SmCubicBezierSurface.h 113 20
source/SMLib/src/SmGauss.cpp 1880 19
source/SMLib/inc/SmThreadLocalStorage.h 147 18
source/SMLib/inc/SmFilletRemoval.h 205 10
source/SMLib/inc/SmCurveFilletExecutive.h 85 9
source/SMLib/inc/SmObjProps.h 43 7
source/SMLib/inc/SmPolynomial.h 60 7
source/SMLib/inc/SmCodeCount.h 120 6
source/SMLib/inc/SmPolyIntersector.h 189 6
source/SMLib/src/NL_Gauss.cpp 1854 6
source/SMLib/inc/SmBrepCutting.h 53 3
source/SMLib/inc/SmHealData.h 531 3
source/SMLib/inc/SmNurbsCrv.h 319 1
source/SMLib/inc/NL_BasisAdv.h 54 0
source/SMLib/inc/NL_BasisBasic.h 80 0
source/SMLib/inc/NL_Bezier.h 60 0
source/SMLib/inc/NL_CrvAdv.h 86 0
source/SMLib/inc/NL_CrvApprox.h 62 0
source/SMLib/inc/NL_CrvBasic.h 139 0
source/SMLib/inc/NL_CrvCommon.h 34 0
source/SMLib/inc/NL_CrvFit.h 210 0
source/SMLib/inc/NL_CrvGeom.h 22 0
source/SMLib/inc/NL_CrvNurb.h 79 0
source/SMLib/inc/NL_CrvOffset.h 28 0
source/SMLib/inc/NL_CrvPoly.h 15 0
source/SMLib/inc/NL_CrvShape.h 39 0
source/SMLib/inc/NL_CrvTool.h 38 0
source/SMLib/inc/NL_DataStruct.h 460 0
source/SMLib/inc/NL_Defines2.h 1784 0
source/SMLib/inc/NL_FrameAdv.h 30 0
source/SMLib/inc/NL_FrameBasic.h 64 0
source/SMLib/inc/NL_FuncsAdv.h 128 0
source/SMLib/inc/NL_FuncsBasic.h 118 0
source/SMLib/inc/NL_Gauss.h 133 0
source/SMLib/inc/NL_Geom.h 134 0
source/SMLib/inc/NL_Geometry.h 222 0
source/SMLib/inc/NL_Globals.h 93 0
source/SMLib/inc/NL_Iges.h 35 0
source/SMLib/inc/NL_Math.h 181 0
source/SMLib/inc/NL_Spiral.h 19 0
source/SMLib/inc/NL_SrfAdv.h 100 0
source/SMLib/inc/NL_SrfApprox.h 30 0
source/SMLib/inc/NL_SrfBasic.h 140 0
source/SMLib/inc/NL_SrfCommon.h 25 0
source/SMLib/inc/NL_SrfFit.h 225 0
source/SMLib/inc/NL_SrfGeom.h 27 0
source/SMLib/inc/NL_SrfLstSqFit.h 52 0
source/SMLib/inc/NL_SrfNurb.h 76 0
source/SMLib/inc/NL_SrfPoly.h 17 0
source/SMLib/inc/NL_SrfShape.h 57 0
source/SMLib/inc/NL_SrfSymbol.h 35 0
source/SMLib/inc/NL_SrfTool.h 44 0
source/SMLib/inc/NL_Tessellate.h 35 0
source/SMLib/inc/NL_Util.h 124 0
source/SMLib/inc/NL_VolumeAdv.h 134 0
source/SMLib/inc/SmCEdge.h 85 0
source/SMLib/inc/SmCFace.h 202 0
source/SMLib/inc/SmCacheMgrBrep.h 64 0
source/SMLib/inc/SmCacheMgrCrv.h 64 0
source/SMLib/inc/SmCacheMgrSrf.h 64 0
source/SMLib/inc/SmCacheMgrTSrf.h 64 0
source/SMLib/inc/SmConfig.h 304 0
source/SMLib/inc/SmCoreTypes.h 500 0
source/SMLib/inc/SmCurveTypes.h 417 0
source/SMLib/inc/SmDirectedSilhouette.h 123 0
source/SMLib/inc/SmDllMain.h 24 0
source/SMLib/inc/SmGauss.h 130 0
source/SMLib/inc/SmGeomUtility.h 1198 0
source/SMLib/inc/SmGraphicsNLib.h 31 0
source/SMLib/inc/SmGraphicsOutput.h 122 0
source/SMLib/inc/SmMessages.h 819 0
source/SMLib/inc/SmNurbs.h 47 0
source/SMLib/inc/SmNurbsSrf.h 153 0
source/SMLib/inc/SmNurbsVol.h 142 0
source/SMLib/inc/SmRelationMM.h 343 0
source/SMLib/inc/SmRelationV.h 458 0
source/SMLib/inc/SmSArray.h 632 0
source/SMLib/inc/SmSSIData.h 40 0
source/SMLib/inc/SmSmlibAll.h 137 0
source/SMLib/inc/SmSurfTypes.h 148 0
source/SMLib/inc/SmTools.h 82 0
source/SMLib/inc/SmVolumeAll.h 38 0
source/SMLib/inc/SmVolumeTypes.h 54 0
source/SMLib/inc/StdAfx.h 14 0
source/SMLib/inc/nurbs.h 114 0
source/SMLib/src/NL_CrvShape.cpp 4448 0
source/SMLib/src/NL_Globals.cpp 124 0
source/SMLib/src/NL_VolumeAdv.cpp 9239 0
source/SMLib/src/SmBucketSort.cpp 13 0
source/SMLib/src/SmCEdge.cpp 465 0
source/SMLib/src/SmCFace.cpp 1189 0
source/SMLib/src/SmCacheMgrBrep.cpp 134 0
source/SMLib/src/SmCacheMgrCrv.cpp 240 0
source/SMLib/src/SmCacheMgrSrf.cpp 207 0
source/SMLib/src/SmCacheMgrTSrf.cpp 257 0
source/SMLib/src/SmDllMain.cpp 155 0
source/SMLib/src/SmHashTable.cpp 45 0
source/SMLib/src/SmMapPtrToPtr.cpp 11 0
source/SMLib/src/SmRelation.cpp 12 0
source/SMLib/src/SmSArray.cpp 12 0
source/SMLib/src/SmTArray.cpp 12 0
source/SMLib/src/SmTList.cpp 13 0
source/SMLib/src/StdAfx.cpp 10 0
source/SM_API/inc/SmApiBrep.h 562 0
source/SM_API/inc/SmApiCurves.h 235 0
source/SM_API/inc/SmApiFillets.h 38 0
source/SM_API/inc/SmApiGeneral.h 173 0
source/SM_API/inc/SmApiHeal.h 30 0
source/SM_API/inc/SmApiImportExport.h 67 0
source/SM_API/inc/SmApiIntersectors.h 91 0
source/SM_API/inc/SmApiPolygons.h 107 0
source/SM_API/inc/SmApiPrimitives.h 260 0
source/SM_API/inc/SmApiQueries.h 341 0
source/SM_API/inc/SmApiSurfaces.h 120 0
source/SM_API/inc/SmApiTessellationParams.h 38 0
source/SM_API/inc/SmApiTrimmedSurfaces.h 67 0
source/SM_API/inc/SmApiTypes.h 52 0
source/SM_API/inc/StdAfx.h 17 0
source/SM_API/src/StdAfx.cpp 10 0

Unreachable functions inside in-scope files: 5120 functions, 234656 lines. Largest:

file unreachable fn lines functions
source/SMLib/src/SmPoly.cpp 21712 263
source/SMLib/src/SmBrep.cpp 12178 95
source/SMLib/src/SmTess.cpp 11772 88
source/SMLib/src/NL_SrfFit.cpp 11109 29
source/SMLib/src/SmSurface.cpp 7221 88
source/SMLib/src/NL_Geom.cpp 5796 65
source/SMLib/src/SmFace.cpp 5279 54
source/SMLib/src/SmVolume.cpp 5053 85
source/SMLib/src/NL_CrvFit.cpp 4662 20
source/SMLib/src/NL_Math.cpp 4172 83
source/SMLib/src/NL_Util.cpp 3810 61
source/SMLib/src/NL_SrfAdv.cpp 3799 12
source/SMLib/src/SmBrepData.cpp 3787 49
source/SMLib/src/SmBSplineSurfaceNLib.cpp 3750 40
source/SMLib/src/SmPolyDecimate.cpp 3586 35
source/SMLib/src/SmEdge.cpp 3191 45
source/SMLib/src/SmCurve.cpp 2897 39
source/SMLib/src/NL_SrfTool.cpp 2788 5
source/SMLib/src/NL_Bezier.cpp 2646 33
source/SMLib/src/NL_SrfBasic.cpp 2599 49
source/SMLib/src/SmFilletCorner.cpp 2469 23
source/SMLib/src/NL_FuncsAdv.cpp 2412 7
source/SMLib/src/SmBSplineSurface.cpp 2404 32
source/SMLib/src/SmSpaceBend.cpp 2367 14
source/SMLib/src/SmLineSegClass.cpp 2344 29
source/SMLib/src/SmGap.cpp 2206 64
source/SMLib/src/SmSpaceUnbend.cpp 2187 16
source/SMLib/src/NL_SrfGeom.cpp 2101 7
source/SMLib/src/SmHealData.cpp 2074 9
source/SMLib/src/SmVertex.cpp 2005 35
source/SMLib/src/NL_CrvAdv.cpp 1970 6
source/SMLib/src/SmBendVolume.cpp 1952 23
source/SMLib/src/NL_CrvBasic.cpp 1950 38
source/SMLib/src/SmTopologyIntersector.cpp 1927 12
source/SMLib/src/NL_CrvApprox.cpp 1903 6
source/SMLib/src/SmGeomUtility.cpp 1900 39
source/SMLib/src/SmEdgeuse.cpp 1837 22
source/SMLib/src/SmBSplineVolume.cpp 1828 35
source/SMLib/src/SmBSplineCurve.cpp 1723 30
source/SMLib/src/NL_CrvNurb.cpp 1714 8

The full list of unreachable functions (file, line, name) is in harness/callgraph/unused_functions.txt.

Global state and nondeterminism hazards

Only code in the in-scope closure is listed. Rust replacements: everything mutable moves into the Kernel value (tolerances, RNG, caches, counters) or into explicit per-operation context structs; pointer-keyed maps become arena-id keyed maps with insertion-ordered iteration (or BTreeMap on ids).

rand()/srand(time) (3 sites)

SmFace::GetPointsInFace reseeds the C RNG with time(NULL) and dithers sample V-parameters when lPointCount > 1. Results are nondeterministic in upstream for that path; callers in the closure (SmAssertArray, SmFeatureExecutive) request one point (deterministic branch). Rust: Kernel RNG (seeded); difftests must avoid lPointCount > 1 or compare only invariants (record in findings.md).

unit function file:lines example
topology.face_p2 SmFace::GetPointsInFace SmFace.cpp:21183,21225,21359 srand((unsigned)time(NULL)) ;

clock()/time() (1 sites)

Only the time(NULL) RNG seed above survives preprocessing. The clock() timing blocks in SmMerge::MergeAddedTopology and SmTrimmingTools::CheckFace sit inside #ifdef SM_DEBUG_CODE and are compiled out of the reference build. Lines inside inactive #if blocks are excluded from every scan here.

unit function file:lines example
topology.face_p2 SmFace::GetPointsInFace SmFace.cpp:21183 srand((unsigned)time(NULL)) ;

Pointer-keyed hash containers (13 sites)

SmMapPtrToPtr/std::unordered_* keyed by object addresses. Lookups are order-independent, but any iteration (GetAllKeys, GetAllValues, GetAllKeyValuePairs, Get1stKeyFor, range-for) is address-ordered and therefore run-to-run unstable. Rust: key by arena ids and iterate in insertion order (indexmap-style) or sorted id order; where upstream iterates, record any ordering-driven divergence in findings.md.

unit function file:lines example
topology.brep_p3 SmBrep::MergeBrep SmBrep.cpp:22871 SmMapPtrToPtr<SmTopology, SmTopology> sSourceToCopyMap;
blend.fillet_corner_p1 SmFilletCorner::AddExtendedOriginalSurface SmFilletCorner.cpp:1088 SmMapPtrToPtr<SmFace, SmSurface> & rMap = m_pExecutive->m_vExtendedSurfacesMap;
blend.fillet_corner_p1 SmFilletCorner::GetExtendedSurface SmFilletCorner.cpp:2315 SmMapPtrToPtr<SmFace, SmSurface> & rMap = m_pExecutive->m_vExtendedSurfacesMap;
blend.hcr SmHCR::ConstructorInit SmHCR.cpp:292,293,294 m_pSilVertices = new(m_crContext) SmMapPtrToPtr<SmVertex, SmVertex>(&m_crContext);
offset.offset_executive_p1 SmOffsetExecutive::SmOffsetExecutive SmOffsetExecutive.cpp:55 m_vSurfExtSurf(*(new (crContext) SmMapPtrToPtr<SmSurface, SmSurface>(&crContext)))
query.poly SmPolyBrep::Transform SmPoly.cpp:12682 std::unordered_set<SmPolyVertAuxData*> sTransformedAuxData;
boolean.topology_intersector_p1 SmTopologyIntersector::SetSubset SmTopologyIntersector.cpp:6459 m_pSubset = new (m_crContext) SmMapPtrToPtr<SmObject, SmObject>();
boolean.topology_intersector_p2 SmTopologyIntersector::SmTopologyIntersector SmTopologyIntersector.cpp:130,131 m_pBToO = new(crContext) SmMapPtrToPtr<SmObject, SmObject>;
topology.brep_p1 sm_GetObjectMap SmBrep.cpp:22824 SmMapPtrToPtr<SmTopology, SmTopology> &rMap) // in : Map to accumulate all From->To relati
topology.brep_p1 sm_SetObjectMap SmBrep.cpp:22805 SmMapPtrToPtr<SmTopology, SmTopology> &rMap, // in : Map to accumulate all From->To relati

Iteration over pointer-keyed containers (address-ordered) (4 sites)

These sites enumerate a pointer-keyed map/set, so the visiting order (and anything order-dependent downstream: created topology order, tie-breaks, first-match results) depends on heap addresses. Each is a candidate determinism divergence vs upstream; the Rust port uses insertion order of arena ids. Difftests touching these paths should compare order-insensitively where upstream is unstable.

unit function file:lines example
topology.brep_p5 SmBrep::Transform SmBrep.cpp:28891 for (SmEdge* pEdge : sEdges)
blend.fillet_executive_p1 SmFilletExecutive::~SmFilletExecutive SmFilletExecutive.cpp:531 m_vExtendedSurfacesMap.GetAllValues(sExtSurfaces);
blend.hcr SmHCR::GetSilhouetteEdges SmHCR.cpp:312 m_pSilEdges->GetAllKeys(rSilEdges);
boolean.topology_intersector_p1 SmTopologyIntersector::GetMappedBrepObjects SmTopologyIntersector.cpp:945 m_pOToB->GetAllValues(sValues);

Sorting / ordering that may involve pointers (0 sites)

Sites using qsort/std::sort/pointer-to-integer casts inside the closure. Each needs a check that the comparator does not order by address.

Thread-local storage (11 sites)

SmThreadLocalStorage (pthread TLS) tracks operator new placement bookkeeping and the error callback. Not needed in Rust (no placement new; errors are Result).

unit function file:lines example
(idiom) smos_InvokeErrorCallback SmMessages.cpp:185 SmErrorCallbackFunctionPtr pfErrorCallbackFunction = SmThreadLocalStorage::GetErrCallbackF
geom.object SmObject::SmObject SmObject.cpp:104,105,86,87 if(SmThreadLocalStorage::GetBeenThroughNew(this))
geom.object SmThreadLocalStorage::GetBeenThroughNew SmThreadLocalStorage.cpp:280,327 SmBoolean SmThreadLocalStorage::GetBeenThroughNew
geom.object SmThreadLocalStorage::GetErrCallbackFunction SmThreadLocalStorage.cpp:596,625 SmErrorCallbackFunctionPtr SmThreadLocalStorage::GetErrCallbackFunction()
geom.object SmThreadLocalStorage::SetBeenThroughNew SmThreadLocalStorage.cpp:207,273 void SmThreadLocalStorage::SetBeenThroughNew

Mutable globals and statics

Non-const namespace-scope variables, static members, and function-local statics in in-scope code (the ~203 static NL_STRING rname = "..." routine-name strings and the sAssert*_list validator label tables are omitted: never written after initialisation). written = the variable is assigned after its initialiser somewhere in its function (static locals) — i.e. state carried across calls.

unit function variable type file:line written
nlib.basis_basic N_BasisFindGlobalMax itl NL_INTEGER NL_BasisBasic.cpp:1754 no
nlib.basis_basic N_BasisFindGlobalMax nok NL_INTEGER NL_BasisBasic.cpp:1755 no
nlib.crv_adv_p1 `` NOREM NL_REAL NL_CrvAdv.cpp:20
nlib.crv_adv_p1 `` KN_TOL NL_REAL NL_CrvAdv.cpp:21
nlib.crv_adv_p1 `` cto NL_REAL NL_CrvAdv.cpp:30
nlib.crv_adv_p2 N_CrvEvalUnboundedPtsAndDerivs g1tol NL_REAL NL_CrvAdv.cpp:4261 no
nlib.crv_geom N_CrvArcLength ctl NL_REAL NL_CrvGeom.cpp:669 no
nlib.crv_tool_p1 `` cto NL_REAL NL_CrvTool.cpp:15
nlib.crv_tool_p1 `` NOREM NL_REAL NL_CrvTool.cpp:16
nlib.geom `` ST_mmxaps_xp NL_REAL * NL_Geom.cpp:20
nlib.geom `` ST_mmxaps_yp NL_REAL * NL_Geom.cpp:21
nlib.geom `` ST_mmxaps_gn NL_INDEX NL_Geom.cpp:22
nlib.math `` NLIBCHKBYPASS NL_INDEX NL_Math.cpp:14
nlib.math `` ST_EvalIsoUvSwitch NL_INDEX NL_Math.cpp:22
nlib.math `` ST_EvalIsoGloUv NL_REAL NL_Math.cpp:23
nlib.math `` ST_EvalIsoGloS NL_FLAG (*)(NL_REAL, NL_REAL, NL_POINT *) NL_Math.cpp:24
nlib.spiral `` RL int NL_Spiral.cpp:22
nlib.spiral `` nSpans NL_INDEX NL_Spiral.cpp:23
nlib.spiral `` dTurns NL_REAL NL_Spiral.cpp:24
nlib.spiral `` h NL_REAL NL_Spiral.cpp:25
nlib.spiral `` r0 NL_REAL NL_Spiral.cpp:26
nlib.spiral `` r1 NL_REAL NL_Spiral.cpp:27
nlib.spiral `` Rdfun NL_REAL NL_Spiral.cpp:28
nlib.srf_adv_p1 `` KN_TOL NL_REAL NL_SrfAdv.cpp:23
nlib.srf_adv_p2 ST_surxsdr siDebug int NL_SrfAdv.cpp:738 no
nlib.srf_adv_p2 ST_surxsdr cbi int NL_SrfAdv.cpp:739 no
nlib.srf_adv_p1 N_SrfEvalPtDerivsUnbounded g1tol NL_REAL NL_SrfAdv.cpp:5450 no
nlib.srf_adv_p5 N_CreateSkinSrfBoundaryContinuity ORIGIN NL_CPOINT NL_SrfAdv.cpp:13265 no
nlib.srf_adv_p5 N_CreateSkinSrfBoundaryContinuity dper NL_REAL NL_SrfAdv.cpp:13267 no
nlib.srf_adv_p5 N_CreateSkinSrfBoundaryContinuity lper NL_REAL NL_SrfAdv.cpp:13268 no
nlib.srf_adv_p6 N_CreateSweepScale MAXPTS NL_INDEX NL_SrfAdv.cpp:15356 no
nlib.srf_adv_p6 N_FillNSidedHole lto NL_REAL NL_SrfAdv.cpp:18604 no
nlib.srf_fit `` pts2 NL_REAL ** NL_SrfFit.cpp:4227
nlib.srf_fit `` p2 NL_REAL ** NL_SrfFit.cpp:4228
nlib.srf_fit `` glo_np NL_INDEX NL_SrfFit.cpp:4229
nlib.srf_fit `` error NL_FLAG NL_SrfFit.cpp:12657
nlib.srf_offset `` slm NL_REAL NL_SrfOffset.cpp:615
nlib.srf_offset `` totalmax NL_INDEX NL_SrfOffset.cpp:616
nlib.srf_tool_p1 `` sto NL_REAL NL_SrfTool.cpp:13
nlib.srf_tool_p1 `` NOREM NL_REAL NL_SrfTool.cpp:14
geom.assert_array `` SM_bAssertValidStream int SmAssertArray.cpp:24
surface.b_spline_volume_n_lib `` s_lVolEvalCount ULONG SmBSplineVolumeNLib.cpp:1716
blend.fillet_corner_p3 SmFilletCorner::Create iDebugLevel int SmFilletCorner.cpp:1152 no
blend.fillet_executive_p2 SmFilletExecutive::SurfaceSurfaceFillet dAngTol double SmFilletExecutive.cpp:1503 no; runtime-initialised on first call
blend.fillet_executive_p2 SmFilletExecutive::SurfaceSurfaceFillet dTanTol double SmFilletExecutive.cpp:1504 no; runtime-initialised on first call
blend.fillet_solver_p4 SmFilletSolver::ComputePointValues sdStaticStep double SmFilletSolver.cpp:3604 no; runtime-initialised on first call
blend.fillet_solver_p1 SmFilletSolver::SetupOffsetExtension cbiLinear int SmFilletSolver.cpp:4203 no
(not in a unit) `` badmem void * SmMemory.cpp:60
(not in a unit) `` c3d_smlib_error_handler void (*)(int, const TCHAR *, int, const TCHAR *) SmMessages.cpp:50
(not in a unit) `` b_DoGraphics int SmMessages.cpp:56
(not in a unit) `` b_OutputLong int SmMessages.cpp:57
(not in a unit) `` b_OutputThin int SmMessages.cpp:58
(not in a unit) `` b_OutputDebugLog int SmMessages.cpp:59
(not in a unit) `` b_OutputCommandLog int SmMessages.cpp:60
(not in a unit) `` b_OutputApiLog int SmMessages.cpp:61
(not in a unit) `` sOutputFile TCHAR[1024] SmMessages.cpp:78
(not in a unit) `` sOutputFileThin TCHAR[1024] SmMessages.cpp:79
(not in a unit) `` sOutputFileDebugLog TCHAR[1024] SmMessages.cpp:80
(not in a unit) `` s_pfUICallbackFun void (*)() SmMessages.cpp:89
(not in a unit) `` s_pfExcapeCallbackFun int (*)() SmMessages.cpp:103
(not in a unit) `` s_pfBrepListFun void (*)(const SmObject *) SmMessages.cpp:199
(not in a unit) `` s_pfBrepListClearFun void (*)() SmMessages.cpp:226
nurbs.nurbs_crv `` cto gw_REAL SmNurbsCrv.cpp:1477
nurbs.nurbs_crv `` itl long SmNurbsCrv.cpp:2678
nurbs.nurbs_crv `` nok long SmNurbsCrv.cpp:2679
topology.proto_topology_p1 SmProtoTopologyManager::CanCombineEdgeDefinitions sdTolFactor double SmProtoTopology.cpp:6569 no
intersect.surface_intersector_p3 SmSurfaceIntersector::TestPoint bStopAtSingularity int SmSurfaceIntersector.cpp:4630 no
intersect.surface_intersector_p4 SmSurfaceIntersector::DoPointIntersection bInsideMe int SmSurfaceIntersector.cpp:7156 no
geom.object `` s_sBeenThroughNew bool SmThreadLocalStorage.cpp:36
geom.object `` s_pfErrCallbackFunction SmErrorCallbackFunctionPtr SmThreadLocalStorage.cpp:331
geom.object `` s_lSERDepth ULONG SmThreadLocalStorage.cpp:332
geom.object `` s_lAssertValidDepth ULONG SmThreadLocalStorage.cpp:333
geom.tol `` s_ZoneTol3d SmZoneTol3d SmTol.cpp:70
geom.tol `` s_TolGapGain double SmTol.cpp:71
geom.tol `` s_ModelSizeEstimate double SmTol.cpp:72
geom.tol `` s_LargeSmallSizeRatio double SmTol.cpp:73
boolean.topology_intersector_p3 SmTopologyIntersector::MergeCoincidentSurfaces cbiTol int SmTopologyIntersector.cpp:4536 no
topology.topology_traverser `` SM_AIH_FACE_NUMBER int SmTopologyTraverser.cpp:1389
geom.context `` pGlobalContext SmContext * SmApiGeneral.cpp:33

Highlights:

  • SmTol.cpp: s_ZoneTol3d, s_TolGapGain, s_ModelSizeEstimate, s_LargeSmallSizeRatio are process-wide tolerance state -> fields of Kernel.
  • SmApiGeneral.cpp: pGlobalContext (lazily created default SmContext) -> callers pass &mut Kernel.
  • NLib file statics used as hidden parameters between a driver and its callback (NL_Geom.cpp ST_mmxaps_*, NL_Math.cpp ST_EvalIso*, NL_Spiral.cpp spiral parameters, NL_SrfFit.cpp pts2/p2/glo_np, NL_SrfOffset.cpp slm/totalmax) -> explicit closure/context structs.
  • Static iteration/statistics counters (itl, nok, s_lVolEvalCount, SM_AIH_FACE_NUMBER) -> dropped or moved into Kernel if they influence results.
  • SmMessages.cpp log flags and UI/escape callbacks -> not ported (errors are Result, no I/O).
  • Context traversal marks (SmContext::m_lCurrentMark*, see upstream .agents/operations/concurrency.md) are per-context mutable state used by topology traversals -> Kernel/per-operation mark sets.

Threading (TBB)

TBB appears only behind SM_USE_TBB / SM_USE_TBB_SCALABLE, which the reference build does not define (upstream docs: operations are single-threaded in the shipped build). Only the guard lines remain in compiled code; the tbb::parallel_for / tbb::task_arena bodies are preprocessed out. Guard sites:

  • NL_Util.cpp:939 in N_Free ((idiom)): #ifdef SM_USE_TBB_SCALABLE
  • NL_Util.cpp:799 in N_Malloc ((idiom)): #ifdef SM_USE_TBB_SCALABLE
  • SmMemory.cpp:135 in smos_Calloc ((idiom)): #ifdef SM_USE_TBB_SCALABLE
  • SmMemory.cpp:225 in smos_Free ((idiom)): #ifdef SM_USE_TBB_SCALABLE
  • SmBrep.cpp:32253 in SmBrep::ShrinkGeometry (topology.brep_p4): #ifdef SM_USE_TBB
  • SmTopologyIntersector.cpp:1128 in SmTopologyIntersector::IntersectInsertRelate (boolean.topology_intersector_p2): #ifdef SM_USE_TBB
  • SmTopologyIntersector.cpp:1657 in SmTopologyIntersector::IntersectTopology (boolean.topology_intersector_p2): #ifdef SM_USE_TBB
  • SmTopologyIntersector.cpp:1734 in SmTopologyIntersector::IntersectTopology (boolean.topology_intersector_p2): #endif // SM_USE_TBB

The parallel paths in SmTopologyIntersector::IntersectInsertRelate / IntersectTopology and SmBrep::ShrinkGeometry have serial #else branches, which are what the reference build runs and what the Rust port reproduces (deterministic order). SmMemory.cpp/NL_Util.cpp only switch the allocator.

Caveats

  • CHA over-approximates: e.g. SmSurface::Evaluate-style dispatch makes every surface subclass (including volume-deformation SmCrvInVolume/SmSrfInVolume/SmBendVolume types) in scope. Units whose code mostly fails RTA are flagged in their notes.
  • Calls through macros are seen after expansion (e.g. SER(...), NER(...)); calls inside #ifdef SM_DEBUG_CODE are not compiled and not seen, matching the reference build.
  • Implicit destructor calls of stack objects are approximated by constructor -> destructor edges.