@thermopylae/lib.cache
Version:
45 lines (44 loc) • 1.22 kB
TypeScript
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 };