OpenTTD Source 20241224-master-gee860a5c8e
|
class HashTable<Titem, HASH_BITS> - simple hash table of pointers allocated elsewhere. More...
#include <hashtable.hpp>
Public Types | |
typedef Titem::Key | Tkey |
Public Member Functions | |
int | Count () const |
item count | |
void | Clear () |
simple clear - forget all items - used by CSegmentCostCacheT.Flush() | |
const Titem * | Find (const Tkey &key) const |
const item search | |
Titem * | Find (const Tkey &key) |
non-const item search | |
Titem * | TryPop (const Tkey &key) |
non-const item search & optional removal (if found) | |
Titem & | Pop (const Tkey &key) |
non-const item search & removal | |
bool | TryPop (Titem &item) |
non-const item search & optional removal (if found) | |
void | Pop (Titem &item) |
non-const item search & removal | |
void | Push (Titem &new_item) |
add one item - copy it from the given item | |
Static Public Attributes | |
static constexpr int | HASH_BITS = Thash_bits_ |
static constexpr int | CAPACITY = 1 << HASH_BITS |
Protected Types | |
typedef HashTableSlot< Titem > | Slot |
each slot contains pointer to the first item in the list, Titem contains pointer to the next item - GetHashNext(), SetHashNext() | |
Static Protected Member Functions | |
static int | CalcHash (const Tkey &key) |
static helper - return hash for the given key modulo number of slots | |
static int | CalcHash (const Titem &item) |
static helper - return hash for the given item modulo number of slots | |
Protected Attributes | |
Slot | slots [CAPACITY] |
int | number_of_items = 0 |
class HashTable<Titem, HASH_BITS> - simple hash table of pointers allocated elsewhere.
Supports: Add/Find/Remove of Titems.
Your Titem must meet some extra requirements to be HashTable compliant:
In addition, the Titem::Key class must support:
Definition at line 133 of file hashtable.hpp.
|
protected |
each slot contains pointer to the first item in the list, Titem contains pointer to the next item - GetHashNext(), SetHashNext()
Definition at line 144 of file hashtable.hpp.
typedef Titem::Key HashTable< Titem, Thash_bits_ >::Tkey |
Definition at line 135 of file hashtable.hpp.
|
inlinestaticprotected |
static helper - return hash for the given item modulo number of slots
Definition at line 160 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::CalcHash().
|
inlinestaticprotected |
static helper - return hash for the given key modulo number of slots
Definition at line 150 of file hashtable.hpp.
Referenced by HashTable< Titem, Thash_bits_ >::CalcHash(), HashTable< Titem, Thash_bits_ >::Find(), HashTable< Titem, Thash_bits_ >::Find(), HashTable< Titem, Thash_bits_ >::Push(), HashTable< Titem, Thash_bits_ >::TryPop(), and HashTable< Titem, Thash_bits_ >::TryPop().
|
inline |
simple clear - forget all items - used by CSegmentCostCacheT.Flush()
Definition at line 173 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::Clear().
Referenced by HashTable< Titem, Thash_bits_ >::Clear(), and CSegmentCostCacheT< Tsegment >::Flush().
|
inline |
item count
Definition at line 167 of file hashtable.hpp.
Referenced by NodeList< Titem, Thash_bits_open, Thash_bits_closed >::ClosedCount(), and NodeList< Titem, Thash_bits_open, Thash_bits_closed >::OpenCount().
|
inline |
non-const item search
Definition at line 189 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::CalcHash(), and HashTableSlot< TItem >::Find().
|
inline |
const item search
Definition at line 180 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::CalcHash(), and HashTableSlot< TItem >::Find().
Referenced by NodeList< Titem, Thash_bits_open, Thash_bits_closed >::FindClosedNode(), NodeList< Titem, Thash_bits_open, Thash_bits_closed >::FindOpenNode(), NodeList< Titem, Thash_bits_open, Thash_bits_closed >::InsertClosedNode(), and NodeList< Titem, Thash_bits_open, Thash_bits_closed >::InsertOpenNode().
|
inline |
non-const item search & removal
Definition at line 210 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::TryPop().
Referenced by NodeList< Titem, Thash_bits_open, Thash_bits_closed >::PopBestOpenNode(), and NodeList< Titem, Thash_bits_open, Thash_bits_closed >::PopOpenNode().
|
inline |
non-const item search & removal
Definition at line 231 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::TryPop().
|
inline |
add one item - copy it from the given item
Definition at line 238 of file hashtable.hpp.
References HashTableSlot< TItem >::Attach(), HashTable< Titem, Thash_bits_ >::CalcHash(), and HashTableSlot< TItem >::Find().
Referenced by NodeList< Titem, Thash_bits_open, Thash_bits_closed >::InsertClosedNode(), and NodeList< Titem, Thash_bits_open, Thash_bits_closed >::InsertOpenNode().
|
inline |
non-const item search & optional removal (if found)
Definition at line 198 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::CalcHash(), and HashTableSlot< TItem >::Detach().
Referenced by HashTable< Titem, Thash_bits_ >::Pop(), and HashTable< Titem, Thash_bits_ >::Pop().
|
inline |
non-const item search & optional removal (if found)
Definition at line 218 of file hashtable.hpp.
References HashTable< Titem, Thash_bits_ >::CalcHash(), and HashTableSlot< TItem >::Detach().
|
staticconstexpr |
Definition at line 137 of file hashtable.hpp.
|
staticconstexpr |
Definition at line 136 of file hashtable.hpp.
|
protected |
Definition at line 147 of file hashtable.hpp.
|
protected |
Definition at line 146 of file hashtable.hpp.