enumset32
Version:
High-performance, typesafe, small ordered set implemented in TypeScript
46 lines (45 loc) • 3.66 kB
TypeScript
/*!
* Copyright (c) 2019 Justin Johansson
*/
export interface Enumset32<ENUM extends NumericEnumLike<ENUM>> {
__Enumset32: undefined | ENUM;
}
export declare type NumericEnumLike<ENUM> = Record<keyof ENUM, number & ENUM[keyof ENUM]> & {
[key: number]: undefined | string;
};
export declare type UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>> = _UniversalEnumset32<ENUM> & Enumset32<ENUM>;
export declare class _UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>> {
static create<ENUM extends NumericEnumLike<ENUM>>(enumObject: ENUM): UniversalEnumset32<ENUM>;
readonly Enum: ENUM;
readonly Member: Record<keyof ENUM, Enumset32<ENUM>>;
private readonly _univ;
private constructor();
readonly Empty: Enumset32<ENUM>;
set(member1?: ENUM[keyof ENUM], member2?: ENUM[keyof ENUM], member3?: ENUM[keyof ENUM], member4?: ENUM[keyof ENUM], member5?: ENUM[keyof ENUM], member6?: ENUM[keyof ENUM], member7?: ENUM[keyof ENUM], member8?: ENUM[keyof ENUM], member9?: ENUM[keyof ENUM], member10?: ENUM[keyof ENUM], member11?: ENUM[keyof ENUM], member12?: ENUM[keyof ENUM], member13?: ENUM[keyof ENUM], member14?: ENUM[keyof ENUM], member15?: ENUM[keyof ENUM], member16?: ENUM[keyof ENUM], member17?: ENUM[keyof ENUM], member18?: ENUM[keyof ENUM], member19?: ENUM[keyof ENUM], member20?: ENUM[keyof ENUM], member21?: ENUM[keyof ENUM], member22?: ENUM[keyof ENUM], member23?: ENUM[keyof ENUM], member24?: ENUM[keyof ENUM], member25?: ENUM[keyof ENUM], member26?: ENUM[keyof ENUM], member27?: ENUM[keyof ENUM], member28?: ENUM[keyof ENUM], member29?: ENUM[keyof ENUM], member30?: ENUM[keyof ENUM], member31?: ENUM[keyof ENUM], member32?: ENUM[keyof ENUM]): Enumset32<ENUM>;
add(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>;
addAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>;
complement(set: Enumset32<ENUM>): Enumset32<ENUM>;
retain(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>;
retainAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>;
remove(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>;
removeAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>;
toggle(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): Enumset32<ENUM>;
toggleAll(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>, ...sets: Array<Enumset32<ENUM>>): Enumset32<ENUM>;
empty(set: Enumset32<ENUM>): boolean;
excludes(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): boolean;
excludesEvery(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean;
excludesSome(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean;
includes(set: Enumset32<ENUM>, member: ENUM[keyof ENUM]): boolean;
includesEvery(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean;
includesSome(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean;
count(set: Enumset32<ENUM>): number;
enumEntries(set: Enumset32<ENUM>): ReadonlyArray<[keyof ENUM, ENUM[keyof ENUM]]>;
enumKeys(set: Enumset32<ENUM>): ReadonlyArray<keyof ENUM>;
enumValues(set: Enumset32<ENUM>): ReadonlyArray<ENUM[keyof ENUM]>;
equal(set1: Enumset32<ENUM>, set2: Enumset32<ENUM>): boolean;
isEnumKey(key: string): key is string & keyof ENUM;
isEnumValue(value: number): value is number & ENUM[keyof ENUM];
toDigitString(set: Enumset32<ENUM>, radix: number): string;
valueOf(): Enumset32<ENUM>;
}
export declare function UniversalEnumset32<ENUM extends NumericEnumLike<ENUM>>(enumObject: ENUM): UniversalEnumset32<ENUM>;