UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

72 lines (61 loc) 2.02 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var RingBuffer = /*#__PURE__*/function () { function RingBuffer(capacity) { (0, _classCallCheck2["default"])(this, RingBuffer); (0, _defineProperty2["default"])(this, "buffer", void 0); (0, _defineProperty2["default"])(this, "_size", 0); (0, _defineProperty2["default"])(this, "offset", 0); this.buffer = new Array(capacity); } (0, _createClass2["default"])(RingBuffer, [{ key: "push", value: function push() { for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) { values[_key] = arguments[_key]; } for (var _i = 0, _values = values; _i < _values.length; _i++) { var value = _values[_i]; if (this.isFull) { throw new Error("buffer is full"); } var i = this.offset + this._size++; this.buffer[i < this.buffer.length ? i : i - this.buffer.length] = value; } } }, { key: "pull", value: function pull() { if (!this._size) return undefined; var result = this.buffer[this.offset]; this.offset++; if (this.offset === this.buffer.length) this.offset = 0; this._size--; return result; } }, { key: "size", get: function get() { return this._size; } }, { key: "isFull", get: function get() { return this._size === this.buffer.length; } }, { key: "capacity", get: function get() { return this.buffer.length; } }]); return RingBuffer; }(); exports["default"] = RingBuffer;