/** * @module * * Array types and factory. */ import { type Class } from '@hqtsm/class'; import type { ArrayBufferType } from './native.js'; import { type Ptr, type PtrConstructor } from './ptr.js'; import type { Type, TypeConstructor } from './type.js'; /** * Array. * * @template T Value type. * @template TArrayBuffer Buffer type. */ export interface Arr = ArrayBufferType> extends Ptr, Type { /** * Array length. */ readonly length: number; /** * Get iterator for values. * * @returns Value iterator. */ [Symbol.iterator](): ArrayIterator; /** * Get iterator for entries. * * @returns Entry iterator. */ entries(): ArrayIterator<[number, T]>; /** * Get iterator for keys. * * @returns Key iterator. */ keys(): ArrayIterator; /** * Get iterator for values. * * @returns Value iterator. */ values(): ArrayIterator; /** * Get value at index. * * @param i Index, negative to index from end. * @returns Value at index. */ at(i: number): T | undefined; } /** * Array constructor. * * @template T Array type. * @template TArrayBuffer Buffer type. */ export interface ArrConstructor = Arr, TArrayBuffer extends ArrayBufferType = ArrayBufferType> extends Omit, never>, Omit, never> { /** * Create instance for buffer. * * @template _TArrayBuffer Buffer type. * @param buffer Buffer data. * @param byteOffset Byte offset into buffer. * @param littleEndian Host endian, little endian, big endian. */ new <_TArrayBuffer extends TArrayBuffer>(buffer: _TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): T & Arr; /** * Create instance for buffer. * * @param buffer Buffer data. * @param byteOffset Byte offset into buffer. * @param littleEndian Host endian, little endian, big endian. */ new (buffer: TArrayBuffer, byteOffset?: number, littleEndian?: boolean | null): T & Arr; /** * Array prototype. */ readonly prototype: T & Arr; /** * Array length. */ readonly LENGTH: number; } /** * Array class. * * @template T Array type. */ export type ArrClass> = Class>; /** * Create array of length from type/array. * * @template T Value type. * @param Type Type constructor. * @param length Array length. * @returns Array constructor. */ export declare function array(Type: TypeConstructor, length: number): ArrConstructor>; /** * Create array of length from pointer. * * @template T Pointer type. * @param Ptr Pointer constructor. * @param length Array length. * @returns Array constructor. */ export declare function array(Ptr: PtrConstructor> & { BYTE_LENGTH?: never; }, length: number): ArrConstructor>; //# sourceMappingURL=arr.d.ts.map