Files
iterables-js/types/containers/Sequence.d.ts
2025-07-23 10:36:50 +03:00

85 lines
2.3 KiB
TypeScript

import { ForwardIterator } from "../iterators/Forward";
export interface SequenceContainer<T, It extends ForwardIterator<T>> {
move(rhs: SequenceContainer<T, It>): this;
size(): number;
/**
* @param size new size
* @param value to insert
*/
resize(size: number, value: T): void;
begin(): It;
end(): It;
clone(): this;
copy(rhs: SequenceContainer<T, It>): this;
empty(): boolean;
/**
* @returns direct access to front item's value
* @throws Error if size == 0
*/
get front(): T;
set front(value: T);
/**
* @returns direct access to back item's value
* @throws Error if size == 0
*/
get back(): T;
set back(value: T);
/**
* inserts [begin, end) at dest
* @param dest where to insert
* @param begin of another SequenceContainer<T>
* @param end of another SequenceContainer<T>
* @returns iterator right after end iterator
*/
insert(dest: It, begin: It, end: It): It;
/**
* inserts [begin, end) at dest
* @param dest where to insert
* @param value which will be inserted
* @param n count of how many values will be inserted
* @returns iterator right after last inserted value
*/
insert(dest: It, value: T, n?: number): It;
/**
* same as list.clear(); list.insert(list.begin(), ...)
* @param begin of another SequenceContainer<T>
* @param end of another SequenceContainer<T>
* @returns end iterator
*/
assign(begin: It, end: It): It;
/**
* same as list.clear(); list.insert(list.begin(), ...)
* @param value which will be inserted
* @param n count of how many values will be inserted
* @returns iterator right after last inserted value
*/
assign(value: T, n?: number): It;
/**
* erases [begin, end)
* @param begin of erased range
* @param end of erased range
* @returns iterator right after erased range
*/
erase(begin: It, end: It): It;
/**
* erases single item
* @param begin which points to erased item
* @returns iterator right after erased value
*/
erase(item: It): It;
/**
* same as list.erase(list.begin(), list.end())
* @returns end iterator
*/
clear(): It;
pushFront(value: T): void;
pushBack(value: T): void;
popFront(): void;
popBack(): void;
[Symbol.iterator](): Iterator<T>;
toJSON(): string;
toString(): string;
}