123456789101112131415161718192021222324252627282930313233 |
- var twoify = function (n) {
- if (n && !(n & (n - 1))) return n
- var p = 1
- while (p < n) p <<= 1
- return p
- }
-
- var Cyclist = function (size) {
- if (!(this instanceof Cyclist)) return new Cyclist(size)
- size = twoify(size)
- this.mask = size - 1
- this.size = size
- this.values = new Array(size)
- }
-
- Cyclist.prototype.put = function (index, val) {
- var pos = index & this.mask
- this.values[pos] = val
- return pos
- }
-
- Cyclist.prototype.get = function (index) {
- return this.values[index & this.mask]
- }
-
- Cyclist.prototype.del = function (index) {
- var pos = index & this.mask
- var val = this.values[pos]
- this.values[pos] = undefined
- return val
- }
-
- module.exports = Cyclist
|