mirror of
https://github.com/JasonYANG170/IOTConnect-Web.git
synced 2024-11-27 14:16:34 +00:00
126 lines
2.9 KiB
JavaScript
126 lines
2.9 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "t", {
|
|
value: true
|
|
});
|
|
|
|
exports.default = void 0;
|
|
|
|
var _Base = require("./Base");
|
|
|
|
var _checkObject = _interopRequireDefault(require("../../utils/checkObject"));
|
|
|
|
var _throwError = require("../../utils/throwError");
|
|
|
|
function _interopRequireDefault(t) {
|
|
return t && t.t ? t : {
|
|
default: t
|
|
};
|
|
}
|
|
|
|
class HashMapIterator extends _Base.HashContainerIterator {
|
|
constructor(t, e, r, s) {
|
|
super(t, e, s);
|
|
this.container = r;
|
|
}
|
|
get pointer() {
|
|
if (this.o === this.h) {
|
|
(0, _throwError.throwIteratorAccessError)();
|
|
}
|
|
const t = this;
|
|
return new Proxy([], {
|
|
get(e, r) {
|
|
if (r === "0") return t.o.u; else if (r === "1") return t.o.l;
|
|
},
|
|
set(e, r, s) {
|
|
if (r !== "1") {
|
|
throw new TypeError("props must be 1");
|
|
}
|
|
t.o.l = s;
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
copy() {
|
|
return new HashMapIterator(this.o, this.h, this.container, this.iteratorType);
|
|
}
|
|
}
|
|
|
|
class HashMap extends _Base.HashContainer {
|
|
constructor(t = []) {
|
|
super();
|
|
const e = this;
|
|
t.forEach((function(t) {
|
|
e.setElement(t[0], t[1]);
|
|
}));
|
|
}
|
|
begin() {
|
|
return new HashMapIterator(this.p, this.h, this);
|
|
}
|
|
end() {
|
|
return new HashMapIterator(this.h, this.h, this);
|
|
}
|
|
rBegin() {
|
|
return new HashMapIterator(this._, this.h, this, 1);
|
|
}
|
|
rEnd() {
|
|
return new HashMapIterator(this.h, this.h, this, 1);
|
|
}
|
|
front() {
|
|
if (this.i === 0) return;
|
|
return [ this.p.u, this.p.l ];
|
|
}
|
|
back() {
|
|
if (this.i === 0) return;
|
|
return [ this._.u, this._.l ];
|
|
}
|
|
setElement(t, e, r) {
|
|
return this.M(t, e, r);
|
|
}
|
|
getElementByKey(t, e) {
|
|
if (e === undefined) e = (0, _checkObject.default)(t);
|
|
if (e) {
|
|
const e = t[this.HASH_TAG];
|
|
return e !== undefined ? this.H[e].l : undefined;
|
|
}
|
|
const r = this.g[t];
|
|
return r ? r.l : undefined;
|
|
}
|
|
getElementByPos(t) {
|
|
if (t < 0 || t > this.i - 1) {
|
|
throw new RangeError;
|
|
}
|
|
let e = this.p;
|
|
while (t--) {
|
|
e = e.B;
|
|
}
|
|
return [ e.u, e.l ];
|
|
}
|
|
find(t, e) {
|
|
const r = this.I(t, e);
|
|
return new HashMapIterator(r, this.h, this);
|
|
}
|
|
forEach(t) {
|
|
let e = 0;
|
|
let r = this.p;
|
|
while (r !== this.h) {
|
|
t([ r.u, r.l ], e++, this);
|
|
r = r.B;
|
|
}
|
|
}
|
|
[Symbol.iterator]() {
|
|
return function*() {
|
|
let t = this.p;
|
|
while (t !== this.h) {
|
|
yield [ t.u, t.l ];
|
|
t = t.B;
|
|
}
|
|
}.bind(this)();
|
|
}
|
|
}
|
|
|
|
var _default = HashMap;
|
|
|
|
exports.default = _default;
|
|
//# sourceMappingURL=HashMap.js.map
|