Class GeomStepProducts
Internal Use Only. The native products of one geometry step (play-core migration P13): the byte products
(Substraction.WriteBin, LayerMillingEngagement.WriteBin, the contour buffer) and the engagement
the force step borrows, behind one handle freed by one machining_geom_step__delete. The native
substraction_t itself dies inside the call (D2); what can live to the force step is the engagement
alone, through EngagementHandle, valid until Dispose(). A step without an
engagement disposes its products on the subtraction worker right after the fills; a step with one hands
them to the force step, which disposes them after the kernel ran; the finalizer covers a cancelled pipeline.
public sealed class GeomStepProducts : IDisposable
- Inheritance
-
GeomStepProducts
- Implements
- Inherited Members
- Extension Methods
Properties
EngagementHandle
The native engagement as the force kernel takes it: borrowed from these products, 0 when the call built none, and Zero once disposed (the pointer is dead then).
public nint EngagementHandle { get; }
Property Value
Methods
Dispose()
Frees the native products once – the byte products and the engagement the force step borrowed; a repeated call does nothing.
public void Dispose()
FillBytes(int, int, byte[])
The bytes of one kind into the caller's buffer (the first size bytes of
dst): what GetBytes(int, int) answers, without the allocation – the pipeline
parses every step's kind-0 and kind-1 bytes out of a buffer rented from Shared.
A size of 0 makes no call.
public void FillBytes(int kind, int size, byte[] dst)
Parameters
Exceptions
- ArgumentException
dstis shorter thansize.- ObjectDisposedException
The products were disposed: no native call is made.
- InvalidOperationException
The export answered another size than the one the call reported: core.dll and HiCbtr disagree, and the bytes are not parsed.
~GeomStepProducts()
A cancelled pipeline drops the products without a dispose: the finalizer frees them.
protected ~GeomStepProducts()
GetBytes(int, int)
The bytes of one kind (0 Substraction.WriteBin, 1 LayerMillingEngagement.WriteBin, 2 the
contour buffer), size long, in a new array: the size the answer reported for that kind
(substraction_bytes, engagement_bytes,
contour_bytes). A size of 0 answers an empty array without a call. The
per-step parses use FillBytes(int, int, byte[]) over a rented buffer instead (no allocation per step).
public byte[] GetBytes(int kind, int size)
Parameters
Returns
- byte[]
Exceptions
- ObjectDisposedException
The products were disposed: no native call is made.
- InvalidOperationException
The export answered another size than the one the call reported: core.dll and HiCbtr disagree, and the bytes are not parsed.