mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Fixed hash map.
This commit is contained in:
@@ -476,20 +476,25 @@ namespace bx
|
||||
return false;
|
||||
}
|
||||
|
||||
void removeByKey(KeyT _key)
|
||||
bool removeByKey(KeyT _key)
|
||||
{
|
||||
uint32_t idx = findIndex(_key);
|
||||
if (UINT32_MAX != idx)
|
||||
{
|
||||
m_handle[idx] = invalid;
|
||||
--m_numElements;
|
||||
update();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void removeByHandle(uint16_t _handle)
|
||||
bool removeByHandle(uint16_t _handle)
|
||||
{
|
||||
if (invalid != _handle)
|
||||
{
|
||||
const uint32_t numElements = m_numElements;
|
||||
for (uint32_t idx = 0; idx < MaxCapacityT; ++idx)
|
||||
{
|
||||
if (m_handle[idx] == _handle)
|
||||
@@ -498,7 +503,15 @@ namespace bx
|
||||
--m_numElements;
|
||||
}
|
||||
}
|
||||
|
||||
if (numElements != m_numElements)
|
||||
{
|
||||
update();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint16_t find(KeyT _key) const
|
||||
@@ -614,6 +627,21 @@ namespace bx
|
||||
return result;
|
||||
}
|
||||
|
||||
void update()
|
||||
{
|
||||
for (uint32_t idx = 0; idx < MaxCapacityT; ++idx)
|
||||
{
|
||||
if (m_handle[idx] != invalid)
|
||||
{
|
||||
const KeyT key = m_key[idx];
|
||||
const uint16_t handle = m_handle[idx];
|
||||
m_handle[idx] = invalid;
|
||||
--m_numElements;
|
||||
insert(key, handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t m_maxCapacity;
|
||||
uint32_t m_numElements;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user