js-sdsl
Version:
javascript standard data structure library which benchmark against C++ STL
270 lines (254 loc) • 8.05 kB
JavaScript
var __extends = this && this.t || function() {
var extendStatics = function(r, t) {
extendStatics = Object.setPrototypeOf || {
__proto__: []
} instanceof Array && function(r, t) {
r.__proto__ = t;
} || function(r, t) {
for (var e in t) if (Object.prototype.hasOwnProperty.call(t, e)) r[e] = t[e];
};
return extendStatics(r, t);
};
return function(r, t) {
if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
extendStatics(r, t);
function __() {
this.constructor = r;
}
r.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __);
};
}();
var __generator = this && this.h || function(r, t) {
var e = {
label: 0,
sent: function() {
if (a[0] & 1) throw a[1];
return a[1];
},
trys: [],
ops: []
}, n, i, a, o;
return o = {
next: verb(0),
throw: verb(1),
return: verb(2)
}, typeof Symbol === "function" && (o[Symbol.iterator] = function() {
return this;
}), o;
function verb(r) {
return function(t) {
return step([ r, t ]);
};
}
function step(o) {
if (n) throw new TypeError("Generator is already executing.");
while (e) try {
if (n = 1, i && (a = o[0] & 2 ? i["return"] : o[0] ? i["throw"] || ((a = i["return"]) && a.call(i),
0) : i.next) && !(a = a.call(i, o[1])).done) return a;
if (i = 0, a) o = [ o[0] & 2, a.value ];
switch (o[0]) {
case 0:
case 1:
a = o;
break;
case 4:
e.label++;
return {
value: o[1],
done: false
};
case 5:
e.label++;
i = o[1];
o = [ 0 ];
continue;
case 7:
o = e.ops.pop();
e.trys.pop();
continue;
default:
if (!(a = e.trys, a = a.length > 0 && a[a.length - 1]) && (o[0] === 6 || o[0] === 2)) {
e = 0;
continue;
}
if (o[0] === 3 && (!a || o[1] > a[0] && o[1] < a[3])) {
e.label = o[1];
break;
}
if (o[0] === 6 && e.label < a[1]) {
e.label = a[1];
a = o;
break;
}
if (a && e.label < a[2]) {
e.label = a[2];
e.ops.push(o);
break;
}
if (a[2]) e.ops.pop();
e.trys.pop();
continue;
}
o = t.call(r, e);
} catch (r) {
o = [ 6, r ];
i = 0;
} finally {
n = a = 0;
}
if (o[0] & 5) throw o[1];
return {
value: o[0] ? o[1] : void 0,
done: true
};
}
};
import TreeContainer from "./Base";
import TreeIterator from "./Base/TreeIterator";
import { throwIteratorAccessError } from "../../utils/throwError";
var OrderedMapIterator = function(r) {
__extends(OrderedMapIterator, r);
function OrderedMapIterator(t, e, n, i) {
var a = r.call(this, t, e, i) || this;
a.container = n;
return a;
}
Object.defineProperty(OrderedMapIterator.prototype, "pointer", {
get: function() {
if (this.o === this.u) {
throwIteratorAccessError();
}
var r = this;
return new Proxy([], {
get: function(t, e) {
if (e === "0") return r.o.p; else if (e === "1") return r.o.H;
t[0] = r.o.p;
t[1] = r.o.H;
return t[e];
},
set: function(t, e, n) {
if (e !== "1") {
throw new TypeError("prop must be 1");
}
r.o.H = n;
return true;
}
});
},
enumerable: false,
configurable: true
});
OrderedMapIterator.prototype.copy = function() {
return new OrderedMapIterator(this.o, this.u, this.container, this.iteratorType);
};
return OrderedMapIterator;
}(TreeIterator);
var OrderedMap = function(r) {
__extends(OrderedMap, r);
function OrderedMap(t, e, n) {
if (t === void 0) {
t = [];
}
var i = r.call(this, e, n) || this;
var a = i;
t.forEach((function(r) {
a.setElement(r[0], r[1]);
}));
return i;
}
OrderedMap.prototype.begin = function() {
return new OrderedMapIterator(this.u.Y || this.u, this.u, this);
};
OrderedMap.prototype.end = function() {
return new OrderedMapIterator(this.u, this.u, this);
};
OrderedMap.prototype.rBegin = function() {
return new OrderedMapIterator(this.u.Z || this.u, this.u, this, 1);
};
OrderedMap.prototype.rEnd = function() {
return new OrderedMapIterator(this.u, this.u, this, 1);
};
OrderedMap.prototype.front = function() {
if (this.i === 0) return;
var r = this.u.Y;
return [ r.p, r.H ];
};
OrderedMap.prototype.back = function() {
if (this.i === 0) return;
var r = this.u.Z;
return [ r.p, r.H ];
};
OrderedMap.prototype.lowerBound = function(r) {
var t = this.$(this.rr, r);
return new OrderedMapIterator(t, this.u, this);
};
OrderedMap.prototype.upperBound = function(r) {
var t = this.tr(this.rr, r);
return new OrderedMapIterator(t, this.u, this);
};
OrderedMap.prototype.reverseLowerBound = function(r) {
var t = this.er(this.rr, r);
return new OrderedMapIterator(t, this.u, this);
};
OrderedMap.prototype.reverseUpperBound = function(r) {
var t = this.nr(this.rr, r);
return new OrderedMapIterator(t, this.u, this);
};
OrderedMap.prototype.forEach = function(r) {
this.ir((function(t, e, n) {
r([ t.p, t.H ], e, n);
}));
};
OrderedMap.prototype.setElement = function(r, t, e) {
return this.v(r, t, e);
};
OrderedMap.prototype.getElementByPos = function(r) {
if (r < 0 || r > this.i - 1) {
throw new RangeError;
}
var t = this.ir(r);
return [ t.p, t.H ];
};
OrderedMap.prototype.find = function(r) {
var t = this.ar(this.rr, r);
return new OrderedMapIterator(t, this.u, this);
};
OrderedMap.prototype.getElementByKey = function(r) {
var t = this.ar(this.rr, r);
return t.H;
};
OrderedMap.prototype.union = function(r) {
var t = this;
r.forEach((function(r) {
t.setElement(r[0], r[1]);
}));
return this.i;
};
OrderedMap.prototype[Symbol.iterator] = function() {
var r, t, e, n;
return __generator(this, (function(i) {
switch (i.label) {
case 0:
r = this.i;
t = this.ir();
e = 0;
i.label = 1;
case 1:
if (!(e < r)) return [ 3, 4 ];
n = t[e];
return [ 4, [ n.p, n.H ] ];
case 2:
i.sent();
i.label = 3;
case 3:
++e;
return [ 3, 1 ];
case 4:
return [ 2 ];
}
}));
};
return OrderedMap;
}(TreeContainer);
export default OrderedMap;
//# sourceMappingURL=OrderedMap.js.map