| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import {
- createSizedArray,
- } from '../helpers/arrays';
- import pooling from './pooling';
- const poolFactory = (function () {
- return function (initialLength, _create, _release) {
- var _length = 0;
- var _maxLength = initialLength;
- var pool = createSizedArray(_maxLength);
- var ob = {
- newElement: newElement,
- release: release,
- };
- function newElement() {
- var element;
- if (_length) {
- _length -= 1;
- element = pool[_length];
- } else {
- element = _create();
- }
- return element;
- }
- function release(element) {
- if (_length === _maxLength) {
- pool = pooling.double(pool);
- _maxLength *= 2;
- }
- if (_release) {
- _release(element);
- }
- pool[_length] = element;
- _length += 1;
- }
- return ob;
- };
- }());
- export default poolFactory;
|