UNPKG

@thi.ng/sparse-set

Version:

TypedArray-based sparse set implementations with extended ES Set API

65 lines 2.62 kB
import type { Fn3, IEquiv, Pair, UIntArray } from "@thi.ng/api"; import type { IEquivSet } from "@thi.ng/associative/api"; /** * After "An Efficient Representation for Sparse Sets" Preston Briggs and Linda * Torczon (1993) * * - https://research.swtch.com/sparse * - https://programmingpraxis.com/2012/03/09/sparse-sets/ * - https://blog.molecular-matters.com/2013/07/24/adventures-in-data-oriented-design-part-3c-external-references/ */ export declare abstract class ASparseSet<T extends UIntArray> extends Set<number> implements IEquiv { #private; protected constructor(dense: T, sparse: T); [Symbol.iterator](): SetIterator<number>; [Symbol.dispose](): void; get size(): number; get capacity(): number; clear(): void; equiv(o: any): boolean; add(key: number): this; delete(key: number): boolean; has(key: number): boolean; get(key: number, notFound?: number): number; first(): number | undefined; into(keys: Iterable<number>): this; disj(keys: Iterable<number>): this; forEach(fn: Fn3<number, number, Set<number>, void>, thisArg?: any): void; entries(): SetIterator<Pair<number, number>>; keys(): SetIterator<number>; values(): SetIterator<number>; protected __copyTo<S extends ASparseSet<T>>(dest: S): S; } export declare class SparseSet8 extends ASparseSet<Uint8Array> implements IEquivSet<number> { constructor(dense: Uint8Array, sparse: Uint8Array); constructor(n: number); get [Symbol.species](): typeof SparseSet8; get [Symbol.toStringTag](): string; copy(): SparseSet8; empty(): SparseSet8; } export declare class SparseSet16 extends ASparseSet<Uint16Array> implements IEquivSet<number> { constructor(dense: Uint16Array, sparse: Uint16Array); constructor(n: number); get [Symbol.species](): typeof SparseSet16; get [Symbol.toStringTag](): string; copy(): SparseSet16; empty(): SparseSet16; } export declare class SparseSet32 extends ASparseSet<Uint32Array> implements IEquivSet<number> { constructor(dense: Uint32Array, sparse: Uint32Array); constructor(n: number); get [Symbol.species](): typeof SparseSet32; get [Symbol.toStringTag](): string; copy(): SparseSet32; empty(): SparseSet32; } /** * Creates a new sparse set with given max. capacity (max ID + 1) and * chooses most memory efficient implementation, e.g. if `n` <= 256 * returns a {@link SparseSet8} instance. * * @param n - max capacity, ID range: [0...n) */ export declare const defSparseSet: (n: number) => SparseSet8 | SparseSet16 | SparseSet32; //# sourceMappingURL=index.d.ts.map