import { registerSync } from './reconstruct.ts'; import type { Loadable } from './loadable.ts'; export class Uint16 implements Loadable { static readonly byteSize = 2; static readonly byteAlignment = 2; private readonly view: Uint16Array; constructor(buffer?: SharedArrayBuffer, byteOffset?: number) { const buf = buffer ?? new SharedArrayBuffer(2); const offset = byteOffset ?? 0; this.view = new Uint16Array(buf, offset, 1); } load(): number { return this.view[0]; } store(value: number): void { this.view[0] = value; } [Symbol.for('moroutine.shared')](): { tag: string; buffer: SharedArrayBuffer; byteOffset: number } { return { tag: 'Uint16', buffer: this.view.buffer as SharedArrayBuffer, byteOffset: this.view.byteOffset }; } } registerSync('Uint16', Uint16);