@thi.ng/sparse-set
Version:
TypedArray-based sparse set implementations with extended ES Set API
65 lines • 2.62 kB
TypeScript
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