HashTable
: HashTable() {}
: HashTable(definition) {}
KeyType key = HashTable::fDefinition.Key(value);
size_t index = HashTable::fDefinition.Hash(value) & (HashTable::fTableSize - 1);
HashTable::_Link(value) = NULL;
ValueType** link = &HashTable::fTable[index];
size_t& count = HashTable::fItemCount;
if (HashTable::fDefinition.Compare(key, existing))
link = &HashTable::_Link(existing);
size_t resizeNeeded = HashTable::ResizeNeeded();
return HashTable::_Resize(resizeNeeded);
if (HashTable::fTableSize > 0) {
index = HashTable::fDefinition.HashKey(key)
& (HashTable::fTableSize - 1);
slot = HashTable::fTable[index];
if (HashTable::fDefinition.Compare(key, slot))
slot = HashTable::_Link(slot);
return ValueIterator(this, HashTable::fTableSize, NULL);
const Definition &_Definition() const { return HashTable::fDefinition; }
size_t index = HashTable::fDefinition.Hash(value) & (tableSize - 1);
&& !HashTable::fDefinition.CompareValues(previous, value);
previous = HashTable::_Link(previous));
HashTable::_Link(value) = HashTable::_Link(previous);
HashTable::_Link(previous) = value;
HashTable::_Link(value) = table[index];
if (HashTable::fTable) {
for (size_t i = 0; i < HashTable::fTableSize; i++) {
ValueType *bucket = HashTable::fTable[i];
ValueType *next = HashTable::_Link(bucket);
delete [] HashTable::fTable;
HashTable::fTableSize = newSize;
HashTable::fTable = newTable;
typedef typename HashTable::Iterator Iterator;
: HashTable() {}
: HashTable(definition) {}
status_t Init(size_t initialSize = HashTable::kMinimumSize)
return HashTable::Init(initialSize);
&& HashTable::fItemCount >= (HashTable::fTableSize * 200 / 256))
_Resize(HashTable::fTableSize * 2);
_Insert(HashTable::fTable, HashTable::fTableSize, value);
HashTable::fItemCount++;
if (!HashTable::RemoveUnchecked(value))
if (AutoExpand && HashTable::fTableSize > HashTable::kMinimumSize
&& HashTable::fItemCount < (HashTable::fTableSize * 50 / 256))
_Resize(HashTable::fTableSize / 2);
Iterator GetIterator() const { return HashTable::GetIterator(); }
ValueIterator(const HashTable *table, size_t index, ValueType *value)
Iterator(const HashTable* table)
Iterator(const HashTable* table, size_t index, ValueType* value)
const HashTable* fTable;
return index >= HashSize() ? -1 : (int32)B_BENDIAN_TO_HOST_INT32(HashTable()[index]);
int32 *HashTable() const { return BlockData() + 6; }
HashTable hash_table;
HashTable fHashTable;
Iterator(const HashTable* table)
Iterator(const HashTable* table, size_t index, ValueType* value)
const HashTable* fTable;