/** * @packageDocumentation * @module std.base */ import { IBidirectionalContainer } from "../../ranges/container/IBidirectionalContainer"; import { IEmpty } from "../../internal/container/partial/IEmpty"; import { ISize } from "../../internal/container/partial/ISize"; import { IPush } from "../../internal/container/partial/IPush"; import { IForwardIterator } from "../../iterator/IForwardIterator"; import { IReverseIterator } from "../../iterator/IReverseIterator"; import { IReversableIterator } from "../../iterator/IReversableIterator"; /** * Common interface for containers. * * @template T Stored elements' type * @template SourceT Derived type extending this {@link IContainer} * @template IteratorT Iterator type * @template ReverseT Reverse iterator type * @template PElem Parent type of *T*, used for inserting elements through {@link assign} and {@link insert}. * * @author Jeongho Nam - https://github.com/samchon */ export interface IContainer, IteratorT extends IContainer.Iterator, ReverseT extends IContainer.ReverseIterator, PElem = T> extends IBidirectionalContainer, ReverseT>, Iterable, IEmpty, ISize, IPush { /** * Range Assigner. * * @param first Input iteartor of the first position. * @param last Input iterator of the last position. */ assign>>(first: InputIterator, last: InputIterator): void; /** * @inheritDoc */ clear(): void; /** * @inheritDoc */ size(): number; /** * @inheritDoc */ empty(): boolean; /** * @inheritDoc */ begin(): IteratorT; /** * @inheritDoc */ end(): IteratorT; /** * @inheritDoc */ rbegin(): ReverseT; /** * @inheritDoc */ rend(): ReverseT; /** * @inheritDoc */ [Symbol.iterator](): IterableIterator; push(...items: PElem[]): number; /** * Erase an element. * * @param pos Position to erase. * @return Iterator following the *pos*, strained by the erasing. */ erase(pos: IteratorT): IteratorT; /** * Erase elements in range. * * @param first Range of the first position to erase. * @param last Rangee of the last position to erase. * @return Iterator following the last removed element, strained by the erasing. */ erase(first: IteratorT, last: IteratorT): IteratorT; /** * Swap elements. * * @param obj Target container to swap. */ swap(obj: SourceT): void; /** * Native function for `JSON.stringify()`. * * @return An array containing children elements. */ toJSON(): Array; } export declare namespace IContainer { /** * Iterator of {@link IContainer}. * * @author Jeongho Nam - https://github.com/samchon */ interface Iterator, IteratorT extends Iterator, ReverseIteratorT extends ReverseIterator, Elem = T> extends Readonly> { /** * Get source container. * * @return The source container. */ source(): SourceT; /** * @inheritDoc */ reverse(): ReverseIteratorT; } /** * Reverse iterator of {@link IContainer} * * @author Jeongho Nam - https://github.com/samchon */ interface ReverseIterator, IteratorT extends Iterator, ReverseT extends ReverseIterator, Elem = T> extends Readonly> { /** * Get source container. * * @return The source container. */ source(): Source; } } //# sourceMappingURL=IContainer.d.ts.map