//================================================================ /** * @packageDocumentation * @module std.base */ //================================================================ import { SetContainer } from "./SetContainer"; import { ITreeContainer } from "../../internal/container/associative/ITreeContainer"; /** * Common interface for tree sets. * * @template Key Key type * @template Unique Whether duplicated key is blocked or not * @template Source Derived type extending this {@link ITreeSet} * @template IteratorT Iterator type * @template ReverseT Reverse iterator type * * @author Jeongho Nam - https://github.com/samchon */ export interface ITreeSet< Key, Unique extends boolean, Source extends ITreeSet, IteratorT extends ITreeSet.Iterator< Key, Unique, Source, IteratorT, ReverseT >, ReverseT extends ITreeSet.ReverseIterator< Key, Unique, Source, IteratorT, ReverseT >, > extends SetContainer, ITreeContainer {} export namespace ITreeSet { /** * Iterator of {@link ITreeSet} * * @author Jenogho Nam */ export type Iterator< Key, Unique extends boolean, SourceT extends ITreeSet, IteratorT extends Iterator, ReverseT extends ReverseIterator< Key, Unique, SourceT, IteratorT, ReverseT >, > = SetContainer.Iterator; /** * Reverse iterator of {@link ITreeSet} * * @author Jenogho Nam */ export type ReverseIterator< Key, Unique extends boolean, SourceT extends ITreeSet, IteratorT extends Iterator, ReverseT extends ReverseIterator< Key, Unique, SourceT, IteratorT, ReverseT >, > = SetContainer.ReverseIterator; }