A HashTable of pointers to objects of type <T>, with deallocation management of the pointers. More...
Public Types | |
typedef HashPtrTable< T, Key, Hash > | this_type |
The template instance used for this table. More... | |
typedef HashTable< T *, Key, Hash > | parent_type |
The template instance used for the parent HashTable. More... | |
using | iterator = typename parent_type::iterator |
using | const_iterator = typename parent_type::const_iterator |
![]() | |
typedef HashTable< T, Key, Hash > | this_type |
The template instance used for this HashTable. More... | |
typedef std::conditional< std::is_same< zero::null, typenamestd::remove_cv< T >::type >::value, Detail::HashTableSingle< Key >, Detail::HashTablePair< Key, T > >::type | node_type |
typedef Key | key_type |
The second template parameter, type of keys used. More... | |
typedef T | mapped_type |
The first template parameter, type of objects contained. More... | |
typedef T | value_type |
Same as mapped_type for OpenFOAM HashTables. More... | |
typedef Hash | hasher |
The third template parameter, the hash index method. More... | |
typedef T * | pointer |
Pointer type for storing into value_type objects. More... | |
typedef T & | reference |
Reference to the stored value_type. More... | |
typedef const T * | const_pointer |
Const pointer type for the stored value_type. More... | |
typedef const T & | const_reference |
Const reference to the stored value_type. More... | |
typedef label | difference_type |
The type to represent the difference between two iterators. More... | |
typedef label | size_type |
The type that can represent the size of a HashTable. More... | |
using | key_iterator = key_iterator_base< iterator > |
Forward iterator returning the key. More... | |
using | const_key_iterator = key_iterator_base< const_iterator > |
Forward const iterator returning the key. More... | |
Public Member Functions | |
HashPtrTable ()=default | |
Default construct with default table capacity. More... | |
HashPtrTable (const label size) | |
Construct given initial table capacity. More... | |
template<class INew > | |
HashPtrTable (Istream &is, const INew &inew) | |
Construct from Istream using given Istream constructor class. More... | |
HashPtrTable (Istream &is) | |
Construct from Istream using default Istream constructor class. More... | |
HashPtrTable (const dictionary &dict) | |
Construct from dictionary with default dictionary constructor class. More... | |
HashPtrTable (const this_type &rhs) | |
Copy construct, making a copy of each element. More... | |
HashPtrTable (this_type &&rhs) | |
Move construct. More... | |
~HashPtrTable () | |
Destructor. More... | |
const T * | get (const Key &key) const |
autoPtr< T > | release (iterator &iter) |
Release ownership of the pointer and replace with a nullptr. More... | |
autoPtr< T > | release (const Key &key) |
Release ownership of the pointer and replace with a nullptr. More... | |
autoPtr< T > | remove (iterator &iter) |
Remove entry specified by given iterator. More... | |
autoPtr< T > | remove (const Key &key) |
Remove entry specified by given key. More... | |
bool | erase (iterator &iter) |
bool | erase (const Key &key) |
void | clear () |
Clear all entries from table and delete any allocated pointers. More... | |
void | write (Ostream &os) const |
Invoke write() on each non-null entry. More... | |
void | operator= (const this_type &rhs) |
Copy assignment. More... | |
void | operator= (this_type &&rhs) |
Move assignment. More... | |
template<class... Args> | |
bool | emplace (const Key &key, Args &&... args) |
Emplace insert a new entry, not overwriting existing entries. More... | |
template<class... Args> | |
bool | emplace_set (const Key &key, Args &&... args) |
Emplace set an entry, overwriting any existing entries. More... | |
bool | insert (const Key &, T *)=delete |
bool | insert (const Key &key, autoPtr< T > &ptr) |
Insert a new entry, not overwriting existing entries. More... | |
bool | insert (const Key &key, autoPtr< T > &&ptr) |
Insert a new entry, not overwriting existing entries. More... | |
bool | insert (const Key &key, std::unique_ptr< T > &&ptr) |
Insert a new entry, not overwriting existing entries. More... | |
bool | set (const Key &key, T *ptr) |
Assign a new entry, overwriting existing entries. More... | |
bool | set (const Key &key, autoPtr< T > &ptr) |
Assign a new entry, overwriting existing entries. More... | |
bool | set (const Key &key, autoPtr< T > &&ptr) |
Assign a new entry, overwriting existing entries. More... | |
bool | set (const Key &key, std::unique_ptr< T > &&ptr) |
Assign a new entry, overwriting existing entries. More... | |
![]() | |
HashTable () | |
Default construct with default (128) table capacity. More... | |
HashTable (const label size) | |
Construct given initial table capacity. More... | |
HashTable (Istream &is, const label size=128) | |
Construct from Istream with default table capacity. More... | |
HashTable (const this_type &ht) | |
Copy construct. More... | |
HashTable (this_type &&rhs) | |
Move construct. More... | |
HashTable (std::initializer_list< std::pair< Key, T > > list) | |
Construct from an initializer list. More... | |
~HashTable () | |
Destructor. More... | |
label | capacity () const noexcept |
The size of the underlying table. More... | |
label | size () const noexcept |
The number of elements in table. More... | |
bool | empty () const noexcept |
True if the hash table is empty. More... | |
T & | at (const Key &key) |
Find and return a hashed entry. FatalError if it does not exist. More... | |
const T & | at (const Key &key) const |
Find and return a hashed entry. FatalError if it does not exist. More... | |
bool | found (const Key &key) const |
Return true if hashed entry is found in table. More... | |
iterator | find (const Key &key) |
Find and return an iterator set at the hashed entry. More... | |
const_iterator | find (const Key &key) const |
Find and return an const_iterator set at the hashed entry. More... | |
const_iterator | cfind (const Key &key) const |
Find and return an const_iterator set at the hashed entry. More... | |
const T & | lookup (const Key &key, const T &deflt) const |
Return hashed entry if it exists, or return the given default. More... | |
List< Key > | toc () const |
The table of contents (the keys) in unsorted order. More... | |
List< Key > | sortedToc () const |
The table of contents (the keys) in sorted order. More... | |
template<class Compare > | |
List< Key > | sortedToc (const Compare &comp) const |
template<class UnaryPredicate > | |
List< Key > | tocKeys (const UnaryPredicate &pred, const bool invert=false) const |
template<class UnaryPredicate > | |
List< Key > | tocValues (const UnaryPredicate &pred, const bool invert=false) const |
template<class BinaryPredicate > | |
List< Key > | tocEntries (const BinaryPredicate &pred, const bool invert=false) const |
UPtrList< const node_type > | csorted () const |
UPtrList< const node_type > | sorted () const |
UPtrList< node_type > | sorted () |
template<class UnaryPredicate > | |
label | countKeys (const UnaryPredicate &pred, const bool invert=false) const |
Count the number of keys that satisfy the unary predicate. More... | |
template<class UnaryPredicate > | |
label | countValues (const UnaryPredicate &pred, const bool invert=false) const |
Count the number of values that satisfy the unary predicate. More... | |
template<class BinaryPredicate > | |
label | countEntries (const BinaryPredicate &pred, const bool invert=false) const |
Count the number of entries that satisfy the binary predicate. More... | |
template<class... Args> | |
bool | emplace (const Key &key, Args &&... args) |
Emplace insert a new entry, not overwriting existing entries. More... | |
template<class... Args> | |
bool | emplace_set (const Key &key, Args &&... args) |
Emplace set an entry, overwriting any existing entries. More... | |
bool | insert (const Key &key, const T &obj) |
Copy insert a new entry, not overwriting existing entries. More... | |
bool | insert (const Key &key, T &&obj) |
Move insert a new entry, not overwriting existing entries. More... | |
bool | set (const Key &key, const T &obj) |
Copy assign a new entry, overwriting existing entries. More... | |
bool | set (const Key &key, T &&obj) |
Move assign a new entry, overwriting existing entries. More... | |
bool | erase (const iterator &iter) |
Erase an entry specified by given iterator. More... | |
bool | erase (const Key &key) |
Erase an entry specified by the given key. More... | |
template<class AnyType , class AnyHash > | |
label | erase (const HashTable< AnyType, Key, AnyHash > &other) |
Remove table entries given by keys of the other hash-table. More... | |
label | erase (std::initializer_list< Key > keys) |
Remove table entries given by the listed keys. More... | |
template<class InputIter > | |
label | erase (InputIter first, InputIter last) |
Remove multiple entries using an iterator range of keys. More... | |
template<unsigned N> | |
label | erase (const FixedList< Key, N > &keys) |
Remove table entries given by the listed keys. More... | |
label | erase (const UList< Key > &keys) |
Remove table entries given by the listed keys. More... | |
template<class AnyType , class AnyHash > | |
label | retain (const HashTable< AnyType, Key, AnyHash > &other) |
Retain table entries given by keys of the other hash-table. More... | |
template<class UnaryPredicate > | |
label | filterKeys (const UnaryPredicate &pred, const bool pruning=false) |
Generalized means to filter table entries based on their keys. More... | |
template<class UnaryPredicate > | |
label | filterValues (const UnaryPredicate &pred, const bool pruning=false) |
Generalized means to filter table entries based on their values. More... | |
template<class BinaryPredicate > | |
label | filterEntries (const BinaryPredicate &pred, const bool pruning=false) |
Generalized means to filter table entries based on their key/value. More... | |
void | resize (const label sz) |
Resize the hash table for efficiency. More... | |
void | clear () |
Clear all entries from table. More... | |
void | clearStorage () |
Clear the table entries and the table itself. More... | |
void | swap (HashTable< T, Key, Hash > &rhs) |
Swap contents into this table. More... | |
void | transfer (HashTable< T, Key, Hash > &rhs) |
Transfer contents into this table. More... | |
T & | operator[] (const Key &key) |
Find and return a hashed entry. FatalError if it does not exist. More... | |
const T & | operator[] (const Key &key) const |
Find and return a hashed entry. FatalError if it does not exist. More... | |
T & | operator() (const Key &key) |
Return existing entry or create a new entry. More... | |
T & | operator() (const Key &key, const T &deflt) |
Return existing entry or insert a new entry. More... | |
void | operator= (const this_type &rhs) |
Copy assign. More... | |
void | operator= (std::initializer_list< std::pair< Key, T > > rhs) |
Copy assign from an initializer list. More... | |
void | operator= (this_type &&rhs) |
Move assign. More... | |
bool | operator== (const this_type &rhs) const |
bool | operator!= (const this_type &rhs) const |
The opposite of the equality operation. More... | |
this_type & | operator+= (const this_type &rhs) |
Add entries into this HashTable. More... | |
const_iterator_pair< const_key_iterator, this_type > | keys () const |
A const iterator begin/end pair for iterating over keys. More... | |
iterator | begin () |
iterator set to the beginning of the HashTable More... | |
const_iterator | begin () const |
const_iterator set to the beginning of the HashTable More... | |
const_iterator | cbegin () const |
const_iterator set to the beginning of the HashTable More... | |
iterator | end () noexcept |
iterator to signal the end (for any HashTable) More... | |
const_iterator | end () const noexcept |
const_iterator to signal the end (for any HashTable) More... | |
constexpr const_iterator | cend () const noexcept |
const_iterator to signal the end (for any HashTable) More... | |
Ostream & | printInfo (Ostream &os) const |
Print information. More... | |
Ostream & | writeKeys (Ostream &os, const label shortLen=0) const |
template<class Compare > | |
Foam::List< Key > | sortedToc (const Compare &comp) const |
template<class UnaryPredicate > | |
Foam::List< Key > | tocKeys (const UnaryPredicate &pred, const bool invert) const |
template<class UnaryPredicate > | |
Foam::List< Key > | tocValues (const UnaryPredicate &pred, const bool invert) const |
template<class BinaryPredicate > | |
Foam::List< Key > | tocEntries (const BinaryPredicate &pred, const bool invert) const |
template<class UnaryPredicate > | |
Foam::label | countKeys (const UnaryPredicate &pred, const bool invert) const |
template<class UnaryPredicate > | |
Foam::label | countValues (const UnaryPredicate &pred, const bool invert) const |
template<class BinaryPredicate > | |
Foam::label | countEntries (const BinaryPredicate &pred, const bool invert) const |
template<class InputIter > | |
Foam::label | erase (InputIter first, InputIter last) |
template<unsigned N> | |
Foam::label | erase (const FixedList< Key, N > &keys) |
template<class AnyType , class AnyHash > | |
Foam::label | erase (const HashTable< AnyType, Key, AnyHash > &other) |
template<class AnyType , class AnyHash > | |
Foam::label | retain (const HashTable< AnyType, Key, AnyHash > &other) |
template<class UnaryPredicate > | |
Foam::label | filterKeys (const UnaryPredicate &pred, const bool pruning) |
template<class UnaryPredicate > | |
Foam::label | filterValues (const UnaryPredicate &pred, const bool pruning) |
template<class BinaryPredicate > | |
Foam::label | filterEntries (const BinaryPredicate &pred, const bool pruning) |
![]() | |
ClassName ("HashTable") | |
Declare type-name (with debug switch) More... | |
HashTableCore ()=default | |
Default construct. More... | |
Friends | |
Istream & | operator>> (Istream &is, HashPtrTable< T, Key, Hash > &tbl) |
Clear table and read from Istream. More... | |
Additional Inherited Members | |
![]() | |
static label | canonicalSize (const label requested_size) |
Return a canonical (power-of-two) of the requested size. More... | |
![]() | |
static const label | maxTableSize |
Maximum allowable internal table size. Approximately labelMax/4. More... | |
![]() | |
bool | iterator_erase (node_type *&entry, label &index) |
Low-level entry erasure using iterator internals. More... | |
A HashTable of pointers to objects of type <T>, with deallocation management of the pointers.
Definition at line 65 of file HashPtrTable.H.
typedef HashPtrTable<T, Key, Hash> this_type |
The template instance used for this table.
Definition at line 83 of file HashPtrTable.H.
typedef HashTable<T*, Key, Hash> parent_type |
The template instance used for the parent HashTable.
Definition at line 86 of file HashPtrTable.H.
using iterator = typename parent_type::iterator |
Definition at line 88 of file HashPtrTable.H.
using const_iterator = typename parent_type::const_iterator |
Definition at line 89 of file HashPtrTable.H.
|
default |
Default construct with default table capacity.
|
inlineexplicit |
Construct given initial table capacity.
Definition at line 33 of file HashPtrTableI.H.
HashPtrTable | ( | Istream & | is, |
const INew & | inew | ||
) |
Construct from Istream using given Istream constructor class.
Definition at line 161 of file HashPtrTableIO.C.
HashPtrTable | ( | Istream & | is | ) |
Construct from Istream using default Istream constructor class.
Definition at line 168 of file HashPtrTableIO.C.
|
explicit |
Construct from dictionary with default dictionary constructor class.
Definition at line 175 of file HashPtrTableIO.C.
References dict.
HashPtrTable | ( | const this_type & | rhs | ) |
Copy construct, making a copy of each element.
HashPtrTable | ( | this_type && | rhs | ) |
Move construct.
Destructor.
Definition at line 73 of file HashPtrTable.C.
References clear().
|
inline |
Return const pointer associated with given entry, returning a nullptr if the key does not exist in the table.
Definition at line 42 of file HashPtrTableI.H.
Foam::autoPtr< T > release | ( | iterator & | iter | ) |
Release ownership of the pointer and replace with a nullptr.
Includes a safeguard against the end-iterator.
Definition at line 82 of file HashPtrTable.C.
Foam::autoPtr< T > release | ( | const Key & | key | ) |
Release ownership of the pointer and replace with a nullptr.
Definition at line 96 of file HashPtrTable.C.
Foam::autoPtr< T > remove | ( | iterator & | iter | ) |
Remove entry specified by given iterator.
Includes a safeguard against the end-iterator.
Definition at line 104 of file HashPtrTable.C.
Foam::autoPtr< T > remove | ( | const Key & | key | ) |
Remove entry specified by given key.
Definition at line 118 of file HashPtrTable.C.
Erase entry specified by given iterator and delete the allocated pointer.
Includes a safeguard against the end-iterator.
Definition at line 126 of file HashPtrTable.C.
References T.
bool erase | ( | const Key & | key | ) |
Erase entry specified by given key and delete the allocated pointer.
Definition at line 144 of file HashPtrTable.C.
void clear |
Clear all entries from table and delete any allocated pointers.
Definition at line 152 of file HashPtrTable.C.
void write | ( | Ostream & | os | ) | const |
Invoke write() on each non-null entry.
Definition at line 144 of file HashPtrTableIO.C.
|
inline |
Emplace insert a new entry, not overwriting existing entries.
Definition at line 55 of file HashPtrTableI.H.
|
inline |
Emplace set an entry, overwriting any existing entries.
Definition at line 72 of file HashPtrTableI.H.
Insert a new entry, not overwriting existing entries.
Definition at line 83 of file HashPtrTableI.H.
References autoPtr< T >::get(), and autoPtr< T >::release().
Insert a new entry, not overwriting existing entries.
Definition at line 100 of file HashPtrTableI.H.
Insert a new entry, not overwriting existing entries.
Definition at line 117 of file HashPtrTableI.H.
Assign a new entry, overwriting existing entries.
Definition at line 134 of file HashPtrTableI.H.
References T.
Referenced by phaseSystem::addField(), exprResultGlobals::addValue(), OneResistanceHeatTransferPhaseSystem< BasePhaseSystem >::heatTransfer(), TwoResistanceHeatTransferPhaseSystem< BasePhaseSystem >::heatTransfer(), InterfaceCompositionPhaseChangePhaseSystem< BasePhaseSystem >::InterfaceCompositionPhaseChangePhaseSystem(), IOobjectList::lookupClassImpl(), IOobjectList::lookupClassTypeImpl(), IOobjectList::lookupImpl(), PhaseTransferPhaseSystem< BasePhaseSystem >::massTransfer(), MassTransferPhaseSystem< BasePhaseSystem >::MassTransferPhaseSystem(), MomentumTransferPhaseSystem< BasePhaseSystem >::momentumTransfer(), MomentumTransferPhaseSystem< BasePhaseSystem >::momentumTransferf(), MomentumTransferPhaseSystem< BasePhaseSystem >::MomentumTransferPhaseSystem(), multiphaseSystem::multiphaseSystem(), PhaseTransferPhaseSystem< BasePhaseSystem >::PhaseTransferPhaseSystem(), PopulationBalancePhaseSystem< BasePhaseSystem >::PopulationBalancePhaseSystem(), ThermalPhaseChangePhaseSystem< BasePhaseSystem >::ThermalPhaseChangePhaseSystem(), and TwoResistanceHeatTransferPhaseSystem< BasePhaseSystem >::TwoResistanceHeatTransferPhaseSystem().
Assign a new entry, overwriting existing entries.
Definition at line 154 of file HashPtrTableI.H.
References autoPtr< T >::release().
Assign a new entry, overwriting existing entries.
Definition at line 165 of file HashPtrTableI.H.
Assign a new entry, overwriting existing entries.
Definition at line 176 of file HashPtrTableI.H.
Clear table and read from Istream.