//================================================================ /** * @packageDocumentation * @module std */ //================================================================ import { InsertIteratorBase } from "../internal/iterator/InsertIteratorBase"; import { IPushFront } from "../internal/container/partial/IPushFront"; import { equal_to } from "../functional/comparators"; /** * Front insert iterator. * * @author Jeongho Nam - https://github.com/samchon */ export class FrontInsertIterator< Source extends IPushFront>, > extends InsertIteratorBase< FrontInsertIterator.ValueType, FrontInsertIterator > { private source_: Source; /* --------------------------------------------------------- METHODS --------------------------------------------------------- */ /** * Initializer Constructor. * * @param source The source container. */ public constructor(source: Source) { super(); this.source_ = source; } /** * @inheritDoc */ public set value(val: FrontInsertIterator.ValueType) { this.source_.push_front(val); } /** * @inheritDoc */ public equals(obj: FrontInsertIterator): boolean { return equal_to(this.source_, obj.source_); } } export namespace FrontInsertIterator { /** * Deduct value type. */ export type ValueType> = Source extends IPushFront ? T : unknown; }