warscript
Version:
A typescript library for Warcraft III using Warpack.
37 lines (36 loc) • 1.35 kB
TypeScript
/// <reference types="@typescript-to-lua/language-extensions" />
/** @noSelfInFile */
type IteratorState<T extends AnyNotNil> = {
t: LuaMap<T, T>;
n?: T;
};
export interface LinkedSet<T> extends LuaPairsKeyIterable<T> {
readonly __linkedHashSet: unique symbol;
}
export declare class LinkedSet<T extends AnyNotNil> {
private n;
private p;
private f?;
private l?;
private s;
copyOf(): LinkedSet<T>;
first(): T | undefined;
last(): T | undefined;
next(key: T): T | undefined;
previous(key: T): T | undefined;
add(key: T): boolean;
remove(key: T): boolean;
contains(key: AnyNotNil): key is T & {
readonly __oneSidedTypeGuard: unique symbol;
};
clear(): void;
get size(): number;
forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
toArray(): T[];
sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
}
export declare const linkedSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LinkedSet<T>;
export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | null | undefined)[]) => LinkedSet<T>;
export {};