UNPKG

js-sdsl

Version:

javascript standard data structure library which benchmark against C++ STL

142 lines (131 loc) 3.51 kB
"use strict"; Object.defineProperty(exports, "t", { value: true }); exports.default = void 0; var _Base = _interopRequireDefault(require("./Base")); var _TreeIterator = _interopRequireDefault(require("./Base/TreeIterator")); var _throwError = require("../../utils/throwError"); function _interopRequireDefault(t) { return t && t.t ? t : { default: t }; } class OrderedMapIterator extends _TreeIterator.default { constructor(t, r, e, s) { super(t, r, s); this.container = e; } get pointer() { if (this.o === this.h) { (0, _throwError.throwIteratorAccessError)(); } const t = this; return new Proxy([], { get(r, e) { if (e === "0") return t.o.u; else if (e === "1") return t.o.l; r[0] = t.o.u; r[1] = t.o.l; return r[e]; }, set(r, e, s) { if (e !== "1") { throw new TypeError("prop must be 1"); } t.o.l = s; return true; } }); } copy() { return new OrderedMapIterator(this.o, this.h, this.container, this.iteratorType); } } class OrderedMap extends _Base.default { constructor(t = [], r, e) { super(r, e); const s = this; t.forEach((function(t) { s.setElement(t[0], t[1]); })); } begin() { return new OrderedMapIterator(this.h.T || this.h, this.h, this); } end() { return new OrderedMapIterator(this.h, this.h, this); } rBegin() { return new OrderedMapIterator(this.h.K || this.h, this.h, this, 1); } rEnd() { return new OrderedMapIterator(this.h, this.h, this, 1); } front() { if (this.i === 0) return; const t = this.h.T; return [ t.u, t.l ]; } back() { if (this.i === 0) return; const t = this.h.K; return [ t.u, t.l ]; } lowerBound(t) { const r = this.U(this.X, t); return new OrderedMapIterator(r, this.h, this); } upperBound(t) { const r = this.Y(this.X, t); return new OrderedMapIterator(r, this.h, this); } reverseLowerBound(t) { const r = this.Z(this.X, t); return new OrderedMapIterator(r, this.h, this); } reverseUpperBound(t) { const r = this.$(this.X, t); return new OrderedMapIterator(r, this.h, this); } forEach(t) { this.tt((function(r, e, s) { t([ r.u, r.l ], e, s); })); } setElement(t, r, e) { return this.M(t, r, e); } getElementByPos(t) { if (t < 0 || t > this.i - 1) { throw new RangeError; } const r = this.tt(t); return [ r.u, r.l ]; } find(t) { const r = this.rt(this.X, t); return new OrderedMapIterator(r, this.h, this); } getElementByKey(t) { const r = this.rt(this.X, t); return r.l; } union(t) { const r = this; t.forEach((function(t) { r.setElement(t[0], t[1]); })); return this.i; } * [Symbol.iterator]() { const t = this.i; const r = this.tt(); for (let e = 0; e < t; ++e) { const t = r[e]; yield [ t.u, t.l ]; } } } var _default = OrderedMap; exports.default = _default; //# sourceMappingURL=OrderedMap.js.map