Table of Contents

Class GeomStepProducts

Namespace
Hi.Machining
Assembly
HiCbtr.dll

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

nint

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

kind int
size int
dst byte[]

Exceptions

ArgumentException

dst is shorter than size.

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

kind int
size int

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.