@thermopylae/lib.cache
Version:
39 lines (38 loc) • 1.11 kB
TypeScript
import { Nullable } from '@thermopylae/core.declarations';
import { LinkedList } from './interface';
/**
* @private
*/
declare const NEXT_SYM: unique symbol;
/**
* @private
*/
interface SingleLinkedListNode<Node> {
[NEXT_SYM]: Nullable<Node>;
}
/**
* @private
*/
declare class SingleLinkedListIterator<Node extends SingleLinkedListNode<Node>> implements Iterator<Node, Node> {
private node;
constructor(node: Nullable<Node>);
next(): IteratorResult<Node, Node>;
}
/**
* @private
*/
declare class SingleLinkedList<Node extends SingleLinkedListNode<Node>> implements LinkedList<SingleLinkedListNode<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;
[Symbol.iterator](): Iterator<SingleLinkedListNode<Node>>;
empty(): boolean;
clear(): void;
}
export { SingleLinkedList, SingleLinkedListNode, SingleLinkedListIterator, NEXT_SYM };