OrderedSet.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. "use strict";
  2. Object.defineProperty(exports, "t", {
  3. value: true
  4. });
  5. exports.default = exports.OrderedSetIterator = 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 OrderedSetIterator extends _TreeIterator.default {
  14. get pointer() {
  15. if (this.I === this.S) {
  16. throw new RangeError("OrderedSet iterator access denied!");
  17. }
  18. return this.I.T;
  19. }
  20. copy() {
  21. return new OrderedSetIterator(this.I, this.S, this.iteratorType);
  22. }
  23. }
  24. exports.OrderedSetIterator = OrderedSetIterator;
  25. class OrderedSet extends _Base.default {
  26. constructor(e = [], t, r) {
  27. super(t, r);
  28. this.K = function*(e) {
  29. if (e === undefined) return;
  30. yield* this.K(e.U);
  31. yield e.T;
  32. yield* this.K(e.J);
  33. };
  34. e.forEach((e => this.insert(e)));
  35. }
  36. begin() {
  37. return new OrderedSetIterator(this.S.U || this.S, this.S);
  38. }
  39. end() {
  40. return new OrderedSetIterator(this.S, this.S);
  41. }
  42. rBegin() {
  43. return new OrderedSetIterator(this.S.J || this.S, this.S, 1);
  44. }
  45. rEnd() {
  46. return new OrderedSetIterator(this.S, this.S, 1);
  47. }
  48. front() {
  49. return this.S.U ? this.S.U.T : undefined;
  50. }
  51. back() {
  52. return this.S.J ? this.S.J.T : undefined;
  53. }
  54. forEach(e) {
  55. let t = 0;
  56. for (const r of this) e(r, t++);
  57. }
  58. getElementByPos(e) {
  59. if (e < 0 || e > this.o - 1) {
  60. throw new RangeError;
  61. }
  62. let t;
  63. let r = 0;
  64. for (const i of this) {
  65. if (r === e) {
  66. t = i;
  67. break;
  68. }
  69. r += 1;
  70. }
  71. return t;
  72. }
  73. insert(e, t) {
  74. this.ee(e, undefined, t);
  75. }
  76. find(e) {
  77. const t = this.re(this.X, e);
  78. if (t !== undefined) {
  79. return new OrderedSetIterator(t, this.S);
  80. }
  81. return this.end();
  82. }
  83. lowerBound(e) {
  84. const t = this.W(this.X, e);
  85. return new OrderedSetIterator(t, this.S);
  86. }
  87. upperBound(e) {
  88. const t = this.Y(this.X, e);
  89. return new OrderedSetIterator(t, this.S);
  90. }
  91. reverseLowerBound(e) {
  92. const t = this.Z(this.X, e);
  93. return new OrderedSetIterator(t, this.S);
  94. }
  95. reverseUpperBound(e) {
  96. const t = this.$(this.X, e);
  97. return new OrderedSetIterator(t, this.S);
  98. }
  99. union(e) {
  100. e.forEach((e => this.insert(e)));
  101. }
  102. [Symbol.iterator]() {
  103. return this.K(this.X);
  104. }
  105. }
  106. var _default = OrderedSet;
  107. exports.default = _default;