# UniqueIdAllocator

from pandac.PandaModules import UniqueIdAllocator

Class : UniqueIdAllocator
Description : Manage a set of ID values from min to max inclusive. The ID numbers that are freed will be allocated (reused) in the same order. I.e. the oldest ID numbers will be allocated.
This implementation will use 4 bytes per id number, plus a few bytes of management data. e.g. 10,000 ID numbers will use 40KB.
Also be advised that ID -1 and -2 are used internally by the allocator. If allocate returns IndexEnd (-1) then the allocator is out of free ID numbers.
There are other implementations that can better leverage runs of used or unused IDs or use bit arrays for the IDs. But, it takes extra work to track the age of freed IDs, which is required for what we wanted. If you would like to kick around other implementation ideas, please contact Schuyler.

## Inheritance:

UniqueIdAllocator:

## Methods of UniqueIdAllocator:

allocate
fractionUsed
free
output

allocate unsigned long int UniqueIdAllocator::allocate(void); Description: Receive an id between _min and _max (that were passed to the constructor). IndexEnd is returned if no ids are available.

fractionUsed float UniqueIdAllocator::fraction_used(void) const; Description: return the decimal fraction of the pool that is used. The range is 0 to 1.0 (e.g. 75% would be 0.75).

free void UniqueIdAllocator::free(unsigned long int index); Description: Free an allocated index (index must be between _min and _max that were passed to the constructor).

output void UniqueIdAllocator::output(ostream &os, bool verbose = (0)) const; Description: ...intended for debugging only.