rc-js-util
Version:
A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.
40 lines • 2.15 kB
TypeScript
import { TTypedArray } from "./t-typed-array.js";
import { ITypedArrayExtensions } from "./i-typed-array-extensions.js";
import { ITypedArrayCtor } from "./i-typed-array-ctor.js";
import { ITypedArrayTupleFactory } from "./i-typed-array-tuple-factory.js";
import { ISharedMemoryBlock } from "../../web-assembly/shared-memory/shared-memory-block.js";
import { IEmscriptenWrapper } from "../../web-assembly/emscripten/i-emscripten-wrapper.js";
import { ATypedArrayTuple } from "./a-typed-array-tuple.js";
import type { IManagedObject, IManagedResourceNode } from "../../lifecycle/manged-resources.js";
import type { IInteropBindings } from "../../web-assembly/emscripten/i-interop-bindings.js";
/**
* @public
* Wrapper of block of memory that is the same size as `TArray`. Provides utility functions with stronger typing than
* {@link ISharedMemoryBlock}.
*/
export interface ISharedTypedArrayTuple<TArray extends (ATypedArrayTuple<number, TTypedArray> & ITypedArrayExtensions)> extends IManagedObject {
memory: ISharedMemoryBlock;
copyToBuffer(readFrom: TArray): void;
copyFromBuffer(writeTo: TArray): void;
}
/**
* @public
*/
export type TExtendedTypedArrayCtor<TArray extends ATypedArrayTuple<number, TTypedArray>> = ITypedArrayCtor<TArray> & {
factory: ITypedArrayTupleFactory<any, any>;
};
/**
@public
{@inheritDoc ISharedTypedArrayTuple}
*/
export declare class SharedTypedArrayTuple<TArray extends (ATypedArrayTuple<number, TTypedArray> & ITypedArrayExtensions)> implements ISharedTypedArrayTuple<TArray> {
readonly memory: ISharedMemoryBlock;
resourceHandle: IManagedResourceNode;
static createOne<TArray extends (ATypedArrayTuple<number, TTypedArray> & ITypedArrayExtensions)>(typedArrayCtor: TExtendedTypedArrayCtor<TArray>, bindToReference: IManagedResourceNode | null, wrapper: IEmscriptenWrapper<IInteropBindings>): ISharedTypedArrayTuple<TArray>;
getWrapper(): IEmscriptenWrapper<IInteropBindings>;
copyToBuffer(readFrom: TArray): void;
copyFromBuffer(writeTo: TArray): void;
private constructor();
private static littleEndian;
}
//# sourceMappingURL=shared-typed-array-tuple.d.ts.map