blob: 0060d66116651d352f34bbb9e5e4a4f44f6c31eb [file] [log] [blame]
var pool_factory = (function () {
return function (initialLength, _create, _release, _clone) {
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 = _maxLength*2;
}
if (_release) {
_release(element);
}
pool[_length] = element;
_length += 1;
}
function clone() {
var clonedElement = newElement();
return _clone(clonedElement);
}
return ob;
};
}());