Guard common and handwritten entrypoints through native cleanup and callback restoration. Add exclusion, recursive forwarding and exception-unwind probes; p2 adds its concurrent cross-wrapper regression with the port.
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
125 shims carried private copies of the same small helpers (put_vec, st,
nl_status, Rd, dump_crv, read_nurb, ...). Move the most common, byte-identical
form of each into three headers grouped by the upstream API they need, and have
those shims pull them in with `using sc::<name>;`. Shims with a different
variant keep their own copy; files touched by open PRs are left alone.
`the_context()` stays per shim (its function-local SmContext must not be shared).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FBLgPenT24P1dunqnZR1Dj
- C++ shim on real SmBSplineSurface/SmPlane: ComputePointValues (with and
without previous point), LocalPointSolve, DoesPointLieOnCurve,
FindSolutionsOnBoundaryCurve, BranchMayContainAnswers on hand-built trees
- boundary solutions name the curve (BoundaryCurve now carries its natural
interval), as upstream stores the curve pointer
- fixtures from prog_test smSurfaceTest.cpp:3564 (CreateSilhouetteCurves
surface) plus plane edge cases
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNGVDsEXPdxtFSUKma3wKs