![]() |
ezEngine
Release 25.03
|
Implementation of an id mapping table which stores id/value pairs. More...
#include <IdTable.h>
Classes | |
class | ConstIterator |
Const iterator. More... | |
struct | Iterator |
Iterator with write access. More... | |
Public Types | |
using | IndexType = typename IdType::StorageType |
using | TypeOfId = IdType |
Public Member Functions | |
void | Reserve (IndexType capacity) |
Expands the table so it can at least store the given capacity. | |
IndexType | GetCount () const |
Returns the number of active entries in the table. | |
bool | IsEmpty () const |
Returns true, if the table does not contain any elements. | |
void | Clear () |
Clears the table. | |
IdType | Insert (const ValueType &value) |
Inserts the value into the table and returns the corresponding id. | |
IdType | Insert (ValueType &&value) |
Inserts the temporary value into the table and returns the corresponding id. | |
bool | Remove (const IdType id, ValueType *out_pOldValue=nullptr) |
Removes the entry with the given id. Returns if an entry was removed and optionally writes out the old value to out_oldValue. | |
bool | TryGetValue (const IdType id, ValueType &out_value) const |
Returns if an entry with the given id was found and if found writes out the corresponding value to out_value. | |
bool | TryGetValue (const IdType id, ValueType *&out_pValue) const |
Returns if an entry with the given id was found and if found writes out the pointer to the corresponding value to out_pValue. | |
const ValueType & | operator[] (const IdType id) const |
Returns the value to the given id. Does bounds checks in debug builds. | |
ValueType & | operator[] (const IdType id) |
Returns the value to the given id. Does bounds checks in debug builds. | |
const ValueType & | GetValueUnchecked (const IndexType index) const |
Returns the value at the given index. Does bounds checks in debug builds but does not check for stale access. | |
ValueType & | GetValueUnchecked (const IndexType index) |
Returns the value at the given index. Does bounds checks in debug builds but does not check for stale access. | |
bool | Contains (const IdType id) const |
Returns if the table contains an entry corresponding to the given id. | |
Iterator | GetIterator () |
Returns an Iterator to the very first element. | |
ConstIterator | GetIterator () const |
Returns a constant Iterator to the very first element. | |
ezAllocator * | GetAllocator () const |
Returns the allocator that is used by this instance. | |
bool | IsFreelistValid () const |
Returns whether the internal free-list is valid. For testing purpose only. | |
Protected Member Functions | |
ezIdTableBase (ezAllocator *pAllocator) | |
Creates an empty id-table. Does not allocate any data yet. | |
ezIdTableBase (const ezIdTableBase< IdType, ValueType > &rhs, ezAllocator *pAllocator) | |
Creates a copy of the given id-table. | |
~ezIdTableBase () | |
Destructor. | |
void | operator= (const ezIdTableBase< IdType, ValueType > &rhs) |
Copies the data from another table into this one. | |
Implementation of an id mapping table which stores id/value pairs.
An id contains an index into the table and a generation counter to detect if a table entry was re-used. All insertion/erasure/lookup functions take O(1) time if the table does not need to be expanded. Lookup is nearly as fast as a simple array lookup. The table stores a free-list in its free elements to ensure fast insertion/erasure.