@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
63 lines • 1.54 kB
TypeScript
/**
* @template Key, Value
*/
export class ImmutableObjectPool<Key, Value> {
constructor({ capacity, perKeyCapacity }?: {
capacity?: number;
perKeyCapacity?: number;
});
/**
* @readonly
* @type {Signal<Key,Value>}
*/
readonly onRemoved: Signal<Key, Value>;
/**
*
* @type {HashMap<Key, CacheElement<Key,Value>[]>}
*/
data: HashMap<Key, CacheElement<Key, Value>[]>;
/**
*
* @type {CacheElement<Key,Value>|null}
* @private
*/
private __first;
/**
*
* @type {CacheElement<Key,Value>|null}
* @private
*/
private __last;
/**
* How many items in total the pool can hold
* @type {number}
*/
capacity: number;
/**
* Maximum number of items that can be stored for the same key
* @type {number}
*/
perKeyCapacity: number;
/**
* Current number of elements in the pool
* @type {number}
*/
size: number;
get(key: any): Value;
/**
* Removed all elements from cache
* NOTE: {@link onRemoved} signal *does* get triggered for each element
*/
clear(): void;
/**
*
* @param {CacheElement<Key,Value>} el
* @private
*/
private __removeElement;
add(key: any, value: any): boolean;
}
import Signal from "../../events/signal/Signal.js";
import { HashMap } from "../../collection/map/HashMap.js";
import { CacheElement } from "../../cache/CacheElement.js";
//# sourceMappingURL=ImmutableObjectPool.d.ts.map