SofaBuffers TypeScript - v0.9.0
    Preparing search index...

    Interface Visitor

    Receives decoded fields from an IStream. Every method is optional and defaults to a no-op, so a visitor implements only the fields it cares about and silently skips the rest.

    String and blob payloads arrive as one or more chunks, each tagged with the field's total length and the offset of the chunk within the field, so a large payload never has to be held in one piece. Array elements arrive one at a time between Visitor.arrayBegin and Visitor.arrayEnd.

    interface Visitor {
        fp32Raw?: boolean;
        arrayBegin?(id: number, kind: ArrayKind, count: number): void;
        arrayEnd?(id: number): void;
        arrayFp32?(
            id: number,
            index: number,
            value: number,
            raw?: Uint8Array<ArrayBufferLike>,
        ): void;
        arrayFp64?(id: number, index: number, value: number): void;
        arraySigned?(id: number, index: number, value: number | bigint): void;
        arrayUnsigned?(id: number, index: number, value: number | bigint): void;
        blob?(id: number, total: number, offset: number, chunk: Uint8Array): void;
        fp32?(id: number, value: number, raw?: Uint8Array<ArrayBufferLike>): void;
        fp64?(id: number, value: number): void;
        sequenceBegin?(id: number): void | Visitor;
        sequenceEnd?(): void;
        signed?(id: number, value: number | bigint): void;
        string?(id: number, total: number, offset: number, chunk: Uint8Array): void;
        unsigned?(id: number, value: number | bigint): void;
    }
    Index
    fp32Raw?: boolean

    Opt in to the raw-bytes channel on fp32 / arrayFp32. Off by default so a value-only consumer pays nothing: when this is not true the decoder never allocates the per-value little-endian view (which, per fp32 element, roughly quartered array-decode throughput in a microbenchmark). Set it true only in a bit-exact consumer (transcode / raw-bits oracle) that needs raw to preserve a signaling NaN.

    • Start of an array; count elements of kind follow.

      Parameters

      Returns void

    • One fp32 array element. raw (the element's 4 wire bytes) is present only under fp32Raw — see fp32.

      Parameters

      • id: number
      • index: number
      • value: number
      • Optionalraw: Uint8Array<ArrayBufferLike>

      Returns void

    • One fp64 array element. value is exact — see fp64.

      Parameters

      • id: number
      • index: number
      • value: number

      Returns void

    • One signed array element. Number-first like signed.

      Parameters

      • id: number
      • index: number
      • value: number | bigint

      Returns void

    • One unsigned array element. Number-first like unsigned.

      Parameters

      • id: number
      • index: number
      • value: number | bigint

      Returns void

    • A chunk of a blob field.

      Parameters

      • id: number
      • total: number
      • offset: number
      • chunk: Uint8Array

      Returns void

    • An IEEE-754 32-bit float field. When you set fp32Raw to true, raw is a zero-copy little-endian view of the exact 4 wire bytes; use it — not value — when the bytes must round-trip bit-for-bit (§4.6). value is a JS number (a 64-bit double), and widening a signaling NaN into a double quiets it (sets the is-quiet bit), so value cannot represent an fp32 sNaN faithfully. The view aliases the decoder's working buffer and is valid only for the duration of the call — copy it if you retain it, exactly as with a string/blob chunk. Without fp32Raw, raw is undefined (no allocation). fp64 needs no such channel: a double holds all 64 bits verbatim (see fp64).

      Parameters

      • id: number
      • value: number
      • Optionalraw: Uint8Array<ArrayBufferLike>

      Returns void

    • An IEEE-754 64-bit double field. value is exact — a double is 64 bits wide.

      Parameters

      • id: number
      • value: number

      Returns void

    • End of the nested sequence this visitor was handling.

      Returns void

    • A signed integer field. Number-first like unsigned (|value| ≤ 2^53-1number).

      Parameters

      • id: number
      • value: number | bigint

      Returns void

    • A chunk of a UTF-8 string field.

      Parameters

      • id: number
      • total: number
      • offset: number
      • chunk: Uint8Array

      Returns void

    • An unsigned integer field. Number-first: value is a number when it fits exactly (≤ 2^53-1, covering ids, u8..u32 and small u64s) and a bigint only beyond that, so the common case avoids a per-value bigint allocation.

      Parameters

      • id: number
      • value: number | bigint

      Returns void