UNPKG

@thermopylae/lib.cache

Version:
45 lines (44 loc) 1.22 kB
import { Nullable } from '@thermopylae/core.declarations'; import { LinkedList } from './interface'; /** * @private */ declare const PREV_SYM: unique symbol; /** * @private */ declare const NEXT_SYM: unique symbol; /** * @private */ interface DoublyLinkedListNode<Node> { [PREV_SYM]: Nullable<Node>; [NEXT_SYM]: Nullable<Node>; } /** * @private */ declare class DoublyLinkedListIterator<Node extends DoublyLinkedListNode<Node>> implements Iterator<Node, Node> { private node; constructor(node: Nullable<Node>); next(): IteratorResult<Node, Node>; } /** * @private */ declare class DoublyLinkedList<Node extends DoublyLinkedListNode<Node>> implements LinkedList<DoublyLinkedListNode<Node>> { head: Nullable<Node>; tail: Nullable<Node>; size: number; constructor(startNode?: Nullable<Node>); unshift(node: Node): void; push(node: Node): void; insertAfter(prevNode: Node, newNode: Node): void; remove(node: Node): void; toFront(node: Node): void; toTail(node: Node): void; [Symbol.iterator](): Iterator<Node>; empty(): boolean; clear(): void; } export { DoublyLinkedList, DoublyLinkedListNode, DoublyLinkedListIterator, NEXT_SYM, PREV_SYM };