mirror of
https://github.com/billsonnn/nitro-renderer.git
synced 2024-11-27 18:00:51 +01:00
54 lines
959 B
TypeScript
54 lines
959 B
TypeScript
|
export class NumberBank
|
|||
|
{
|
|||
|
private _reservedNumbers: number[];
|
|||
|
private _freeNumbers: number[];
|
|||
|
|
|||
|
constructor(k: number)
|
|||
|
{
|
|||
|
if(k < 0) k = 0;
|
|||
|
|
|||
|
this._reservedNumbers = [];
|
|||
|
this._freeNumbers = [];
|
|||
|
|
|||
|
let i = 0;
|
|||
|
|
|||
|
while(i < k)
|
|||
|
{
|
|||
|
this._freeNumbers.push(i);
|
|||
|
|
|||
|
i++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public dispose(): void
|
|||
|
{
|
|||
|
this._reservedNumbers = null;
|
|||
|
this._freeNumbers = null;
|
|||
|
}
|
|||
|
|
|||
|
public _Str_19709(): number
|
|||
|
{
|
|||
|
if(this._freeNumbers.length > 0)
|
|||
|
{
|
|||
|
const k = this._freeNumbers.pop();
|
|||
|
|
|||
|
this._reservedNumbers.push(k);
|
|||
|
|
|||
|
return k;
|
|||
|
}
|
|||
|
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
public _Str_15187(k: number): void
|
|||
|
{
|
|||
|
const i = this._reservedNumbers.indexOf(k);
|
|||
|
|
|||
|
if(i >= 0)
|
|||
|
{
|
|||
|
this._reservedNumbers.splice(i, 1);
|
|||
|
|
|||
|
this._freeNumbers.push(k);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|