Interface StepIndexColumns<TypeIDType>

The entity index in its columnar (SoA) form — the same packed typed-array columns StepModelBase compacts the object index into at construction, but produced directly by the parse so the per-record object phase never exists (M7; "Structural memory" in the design doc).

Layout mirrors the model's internal columns exactly:

[0, firstInlineElement) top-level records, in parse order (localID) [firstInlineElement, count) inline entities, in the model's unfold order

expressID covers only the top-level range (inline entities have none). typeID uses −1 for "no concrete type" (matching the sidecar sentinel); 0 is a valid type (external mapping). The rare records with children — inline entities or a multi-mapping — are additionally retained as objects in complexEntries / consumed during the unfold, exactly the set the model keeps today; everything else is scalars only.

interface StepIndexColumns<TypeIDType> {
    address: Uint32Array<ArrayBufferLike>;
    complexEntries?: Map<number, StepIndexEntry<TypeIDType>>;
    count: number;
    expressID: Uint32Array<ArrayBufferLike>;
    expressIdsSorted: boolean;
    firstInlineElement: number;
    length: Uint32Array<ArrayBufferLike>;
    typeID: Int32Array<ArrayBufferLike>;
}

Type Parameters

  • TypeIDType

Properties

address: Uint32Array<ArrayBufferLike>
complexEntries?: Map<number, StepIndexEntry<TypeIDType>>

Records with a multiMapping, keyed by localID (rare; retained).

count: number

Total rows (top-level + inline).

expressID: Uint32Array<ArrayBufferLike>
expressIdsSorted: boolean

True if top-level express IDs arrived in non-decreasing order.

firstInlineElement: number

Top-level record count == start of the inline range.

length: Uint32Array<ArrayBufferLike>
typeID: Int32Array<ArrayBufferLike>