OrderedMap.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. "use strict";
  2. Object.defineProperty(exports, "t", {
  3. value: true
  4. });
  5. exports.default = exports.OrderedMapIterator = void 0;
  6. var _Base = _interopRequireDefault(require("./Base"));
  7. var _TreeIterator = _interopRequireDefault(require("./Base/TreeIterator"));
  8. function _interopRequireDefault(e) {
  9. return e && e.t ? e : {
  10. default: e
  11. };
  12. }
  13. class OrderedMapIterator extends _TreeIterator.default {
  14. get pointer() {
  15. if (this.I === this.S) {
  16. throw new RangeError("OrderedMap iterator access denied");
  17. }
  18. return new Proxy([], {
  19. get: (e, r) => {
  20. if (r === "0") return this.I.T; else if (r === "1") return this.I.L;
  21. },
  22. set: (e, r, t) => {
  23. if (r !== "1") {
  24. throw new TypeError("props must be 1");
  25. }
  26. this.I.L = t;
  27. return true;
  28. }
  29. });
  30. }
  31. copy() {
  32. return new OrderedMapIterator(this.I, this.S, this.iteratorType);
  33. }
  34. }
  35. exports.OrderedMapIterator = OrderedMapIterator;
  36. class OrderedMap extends _Base.default {
  37. constructor(e = [], r, t) {
  38. super(r, t);
  39. this.K = function*(e) {
  40. if (e === undefined) return;
  41. yield* this.K(e.U);
  42. yield [ e.T, e.L ];
  43. yield* this.K(e.J);
  44. };
  45. e.forEach((([e, r]) => this.setElement(e, r)));
  46. }
  47. begin() {
  48. return new OrderedMapIterator(this.S.U || this.S, this.S);
  49. }
  50. end() {
  51. return new OrderedMapIterator(this.S, this.S);
  52. }
  53. rBegin() {
  54. return new OrderedMapIterator(this.S.J || this.S, this.S, 1);
  55. }
  56. rEnd() {
  57. return new OrderedMapIterator(this.S, this.S, 1);
  58. }
  59. front() {
  60. if (!this.o) return undefined;
  61. const e = this.S.U;
  62. return [ e.T, e.L ];
  63. }
  64. back() {
  65. if (!this.o) return undefined;
  66. const e = this.S.J;
  67. return [ e.T, e.L ];
  68. }
  69. forEach(e) {
  70. let r = 0;
  71. for (const t of this) e(t, r++);
  72. }
  73. lowerBound(e) {
  74. const r = this.W(this.X, e);
  75. return new OrderedMapIterator(r, this.S);
  76. }
  77. upperBound(e) {
  78. const r = this.Y(this.X, e);
  79. return new OrderedMapIterator(r, this.S);
  80. }
  81. reverseLowerBound(e) {
  82. const r = this.Z(this.X, e);
  83. return new OrderedMapIterator(r, this.S);
  84. }
  85. reverseUpperBound(e) {
  86. const r = this.$(this.X, e);
  87. return new OrderedMapIterator(r, this.S);
  88. }
  89. setElement(e, r, t) {
  90. this.ee(e, r, t);
  91. }
  92. find(e) {
  93. const r = this.re(this.X, e);
  94. if (r !== undefined) {
  95. return new OrderedMapIterator(r, this.S);
  96. }
  97. return this.end();
  98. }
  99. getElementByKey(e) {
  100. const r = this.re(this.X, e);
  101. return r ? r.L : undefined;
  102. }
  103. getElementByPos(e) {
  104. if (e < 0 || e > this.o - 1) {
  105. throw new RangeError;
  106. }
  107. let r;
  108. let t = 0;
  109. for (const s of this) {
  110. if (t === e) {
  111. r = s;
  112. break;
  113. }
  114. t += 1;
  115. }
  116. return r;
  117. }
  118. union(e) {
  119. e.forEach((([e, r]) => this.setElement(e, r)));
  120. }
  121. [Symbol.iterator]() {
  122. return this.K(this.X);
  123. }
  124. }
  125. var _default = OrderedMap;
  126. exports.default = _default;