amos-tool
Version:
amos ui tool
68 lines (64 loc) • 1.53 kB
JavaScript
"use strict";
function _ArrayHigh(r) {
this.array = void 0 === r ? [] : new Array(r);
}
_ArrayHigh.prototype = {
length: function() {
return this.array.length;
},
at: function(r) {
return this.array[r];
},
set: function(r, t) {
this.array[r] = t;
},
push: function(r) {
return this.array.push(r);
},
slice: function(r, t) {
return this.array = this.array.slice(r, t);
},
concat: function(r) {
this.array = this.array.concat(r);
},
remove: function(r, t) {
t = void 0 === t ? 1 : t, this.array.splice(r, t);
},
join: function(r) {
return this.array.join(r);
},
clear: function() {
this.array.length = 0;
}
};
var Queue = function() {
this._array_h = new _ArrayHigh;
};
Queue.prototype = {
_index: 0,
push: function(r) {
this._array_h.push(r);
},
pop: function() {
var r = null;
return this._array_h.length() && (r = this._array_h.at(this._index), 2 * ++this._index >= this._array_h.length() && (this._array_h.slice(this._index),
this._index = 0)), r;
},
head: function() {
var r = null, t = this._array_h.length();
return t && (r = this._array_h.at(t - 1)), r;
},
tail: function() {
var r = null;
return this._array_h.length() && (r = this._array_h.at(this._index)), r;
},
length: function() {
return this._array_h.length() - this._index;
},
empty: function() {
return 0 === this._array_h.length();
},
clear: function() {
this._array_h.clear();
}
}, module.exports = Queue;