X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fdeque.ts;h=4a763fc7c4b417ed56d5d5f65f6e96cbfa2503cd;hb=a93f5559e2dd5ff7fd49afdd43bc9806cff92f56;hp=109304a83e2de9ac4470b121817fde9f0803f630;hpb=5e7eca0e665958972066bf77efece90345fe73d4;p=poolifier.git diff --git a/src/deque.ts b/src/deque.ts index 109304a8..4a763fc7 100644 --- a/src/deque.ts +++ b/src/deque.ts @@ -154,6 +154,36 @@ export class Deque { } } + /** + * Returns an backward iterator for the deque. + * + * @returns An backward iterator for the deque. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols + */ + backward (): Iterable { + return { + [Symbol.iterator]: (): Iterator => { + let node = this.tail + return { + next: () => { + if (node == null) { + return { + value: undefined, + done: true + } + } + const ret = { + value: node.value, + done: false + } + node = node.prev as Node + return ret + } + } + } + } + } + private incrementSize (): number { ++this.size if (this.size > this.maxSize) {