Archive commit

This commit is contained in:
Erik McClure
2019-08-28 21:15:02 -07:00
commit 735845746e
1435 changed files with 140724 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
export interface Pool<T> {
create(): T;
dispose(value: T): boolean;
}
export function createPool<T>(count: number, createNew: () => T, reset: (value: T) => void): Pool<T> {
const pool: T[] = [];
const create = () => {
const existing = pool.pop();
if (existing) {
reset(existing);
return existing;
} else {
return createNew();
}
};
const dispose = (value: T) => {
if (pool.length < count) {
pool.push(value);
return true;
} else {
return false;
}
};
return { create, dispose };
}