|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Immutable unordered map backed by a Hash Array Mapped Trie (HAMT). More...
#include <tpl_persistent_hash_map.H>
Classes | |
| struct | BitmapNode |
| struct | CollisionNode |
| struct | LeafNode |
| struct | Node |
| Polymorphic base node managed by std::shared_ptr for structural sharing. More... | |
Public Types | |
| using | Hash_Fct_Ptr = size_t(*)(const Key &) |
| Hash function pointer type used by this map. | |
Public Member Functions | |
| PersistentHashMap (const Hash_Fct_Ptr hash_fct=dft_hash_ptr_fct< Key >, const Cmp &cmp=Cmp()) | |
| Construct an empty persistent hash map. | |
| size_t | size () const noexcept |
| Return the number of bindings stored in this version. | |
| bool | is_empty () const noexcept |
| Return true when this version has no bindings. | |
| PersistentHashMap | insert (const Key &key, const T &value) const |
Return a new version with key inserted if absent. | |
| PersistentHashMap | insert (const Key &key, T &&value) const |
Return a new version with key inserted if absent, moving value. | |
| PersistentHashMap | insert_or_assign (const Key &key, const T &value) const |
Return a new version with key bound to value. | |
| PersistentHashMap | insert_or_assign (const Key &key, T &&value) const |
Return a new version with key bound to moved value. | |
| PersistentHashMap | erase (const Key &key) const |
Return a new version without key. | |
| bool | contains (const Key &key) const |
Test whether key is present. | |
| const T * | find (const Key &key) const |
| Find a mapped value. | |
| Array< Key > | keys () const |
| Return all keys in unspecified order. | |
| Array< std::pair< Key, T > > | items () const |
| Return all key/value bindings in unspecified order. | |
| bool | verify () const |
| Verify HAMT routing, collision, uniqueness and size invariants. | |
Private Types | |
| enum class | NodeType { LEAF , BITMAP , COLLISION } |
| Types of polymorphic nodes in the HAMT. More... | |
| using | NodePtr = std::shared_ptr< const Node > |
Private Member Functions | |
| PersistentHashMap (NodePtr root, const Hash_Fct_Ptr hash_fct, Cmp cmp, const size_t size) | |
| NodePtr | merge_leaves (const NodePtr &n1, const NodePtr &n2, const size_t shift) const |
| NodePtr | insert_impl (const NodePtr &node, const Key &key, const T *value, T *movable_value, const size_t hash, const size_t shift, const bool replace, bool &added, bool &changed) const |
| NodePtr | erase_impl (const NodePtr &node, const Key &key, const size_t hash, const size_t shift, bool &removed) const |
| const T * | find_impl (const NodePtr &node, const Key &key, const size_t hash, const size_t shift) const |
| bool | hashes_match_slot (const NodePtr &node, const size_t shift, const size_t pos) const |
| bool | collision_keys_are_unique (const CollisionNode &node) const |
| bool | verify_rec (const NodePtr &node, const size_t shift, size_t &count) const |
| size_t | size_after_insert (const bool added) const |
Static Private Member Functions | |
| static size_t | bitpos (const size_t hash, const size_t shift) noexcept |
| static std::uint32_t | bit (const size_t pos) noexcept |
| static size_t | index (const std::uint32_t bitmap, const std::uint32_t bit_value) noexcept |
| static NodePtr | make_leaf (const Key &key, const T &value, const size_t hash) |
| static NodePtr | make_leaf (const Key &key, T &&value, const size_t hash) |
| static NodePtr | make_leaf_from_value (const Key &key, const T *value, T *movable_value, const size_t hash) |
| static void | append_entry (Array< std::pair< Key, T > > &entries, const Key &key, const T *value, T *movable_value) |
| static void | collect_keys (const NodePtr &node, Array< Key > &out) |
| static void | collect_items (const NodePtr &node, Array< std::pair< Key, T > > &out) |
Private Attributes | |
| NodePtr | root_ |
| Hash_Fct_Ptr | hash_fct_ |
| Cmp | cmp_ |
| size_t | size_ = 0 |
Static Private Attributes | |
| static constexpr size_t | BITS_PER_LEVEL = 5 |
| static constexpr size_t | BRANCHING_FACTOR = 1ULL << BITS_PER_LEVEL |
| static constexpr size_t | LEVEL_MASK = BRANCHING_FACTOR - 1 |
Immutable unordered map backed by a Hash Array Mapped Trie (HAMT).
A HAMT (Hash Array Mapped Trie) is a search trie where keys are not used directly for the search path; instead, they are routed using fragments of their hash value. At each level of the tree, 5 bits of the hash are consumed (allowing 32 possible branches per level).
"Persistence" in this context means immutability with history (structural sharing / path-copying), not disk storage. When an element is inserted or erased, the original container does not mutate; instead, a new map containing the modification is returned. Nodes that were not affected by the operation are recycled and shared between the old and new versions using smart pointers (std::shared_ptr). This makes copying the container an immediate O(1) operation and allows multiple threads to read different versions without using locks.
To avoid wasting memory with arrays of 32 pointers filled with nulls, a 32-bit bitmap is used. If an internal node has only 3 children, its bitmap will have exactly 3 bits set, and it will store an array of exactly 3 pointers. The real position of the pointer is calculated super-efficiently using the hardware instruction std::popcount.
If two distinct keys produce exactly the same 64-bit hash, they are stored in a special collision node (CollisionNode), which acts as a small linear array.
| Key | Key type. It must be copy-constructible and copy-assignable. |
| T | Mapped value type. It must be copy-constructible and copy-assignable so path-copying updates can rebuild shared collision nodes without moving from old versions. |
| Cmp | Equality predicate. If cmp(a, b) is true, the hash function supplied to the constructor must return the same hash for a and b. |
Definition at line 112 of file tpl_persistent_hash_map.H.
| using Aleph::PersistentHashMap< Key, T, Cmp >::Hash_Fct_Ptr = size_t (*)(const Key &) |
Hash function pointer type used by this map.
Definition at line 127 of file tpl_persistent_hash_map.H.
Definition at line 156 of file tpl_persistent_hash_map.H.
|
strongprivate |
Types of polymorphic nodes in the HAMT.
Definition at line 135 of file tpl_persistent_hash_map.H.
|
inlineexplicitprivate |
Definition at line 200 of file tpl_persistent_hash_map.H.
|
inlineexplicit |
Construct an empty persistent hash map.
| hash_fct | Hash function used to route keys through the HAMT. |
| cmp | Equality predicate used to compare keys. |
| std::domain_error | if hash_fct is null. |
| Whatever | copying cmp throws. |
cmp(a, b) is true, hash_fct(a) == hash_fct(b) must also be true. Definition at line 712 of file tpl_persistent_hash_map.H.
References ah_domain_error_unless, and Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_.
|
inlinestaticprivate |
Definition at line 245 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), and value.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl().
|
inlinestaticprivatenoexcept |
Definition at line 214 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
inlinestaticprivatenoexcept |
Definition at line 209 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::LEVEL_MASK.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::hashes_match_slot(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), and Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves().
|
inlinestaticprivate |
Definition at line 670 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::collect_items(), Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, and out.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::collect_items(), and Aleph::PersistentHashMap< Key, T, Cmp >::items().
|
inlinestaticprivate |
Definition at line 648 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::collect_keys(), Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::LeafNode::key, Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, and out.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::collect_keys(), and Aleph::PersistentHashMap< Key, T, Cmp >::keys().
|
inlineprivate |
Definition at line 570 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::CollisionNode::entries, and Aleph::Array< T >::size().
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
inline |
Test whether key is present.
| key | Key to search. |
true if an equivalent key is stored. | Whatever | comparison or hashing throws. |
Definition at line 832 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::find().
|
inline |
Return a new version without key.
| key | Key to erase. |
| std::bad_alloc | or whatever comparison/hashing throws. |
Definition at line 816 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::root_, and Aleph::PersistentHashMap< Key, T, Cmp >::size_.
Referenced by TEST().
|
inlineprivate |
Definition at line 423 of file tpl_persistent_hash_map.H.
References Aleph::and, Aleph::PersistentHashMap< Key, T, Cmp >::bit(), Aleph::PersistentHashMap< Key, T, Cmp >::BITMAP, Aleph::PersistentHashMap< Key, T, Cmp >::bitpos(), Aleph::PersistentHashMap< Key, T, Cmp >::BITS_PER_LEVEL, Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::index(), Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, and Aleph::Array< T >::reserve().
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase(), and Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl().
Find a mapped value.
| key | Key to search. |
nullptr when absent. The pointer remains valid while this map version is alive. | Whatever | comparison or hashing throws. |
Definition at line 845 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, and Aleph::PersistentHashMap< Key, T, Cmp >::root_.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::contains(), and TEST().
|
inlineprivate |
Definition at line 514 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::bit(), Aleph::PersistentHashMap< Key, T, Cmp >::BITMAP, Aleph::PersistentHashMap< Key, T, Cmp >::bitpos(), Aleph::PersistentHashMap< Key, T, Cmp >::BITS_PER_LEVEL, Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::index(), and Aleph::PersistentHashMap< Key, T, Cmp >::LEAF.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::find(), and Aleph::PersistentHashMap< Key, T, Cmp >::find_impl().
|
inlineprivate |
Definition at line 552 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::bitpos(), Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::LeafNode::hash, Aleph::PersistentHashMap< Key, T, Cmp >::CollisionNode::hash, Aleph::PersistentHashMap< Key, T, Cmp >::hashes_match_slot(), and Aleph::PersistentHashMap< Key, T, Cmp >::LEAF.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::hashes_match_slot(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
inlinestaticprivatenoexcept |
Definition at line 219 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching().
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), and Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl().
|
inline |
Return a new version with key inserted if absent.
| key | Key to insert. |
| value | Mapped value to copy into the new version when key is absent. |
| std::bad_alloc | or whatever copying/comparison/hashing throws. |
Definition at line 743 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, Aleph::PersistentHashMap< Key, T, Cmp >::size_after_insert(), and value.
Referenced by main(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().
|
inline |
Return a new version with key inserted if absent, moving value.
| key | Key to insert. |
| value | Mapped value to move into the new version when key is absent. |
value. | std::bad_alloc | or whatever copying/moving/comparison/hashing throws. |
Definition at line 763 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, Aleph::PersistentHashMap< Key, T, Cmp >::size_after_insert(), and value.
|
inlineprivate |
Definition at line 292 of file tpl_persistent_hash_map.H.
References Aleph::and, Aleph::Array< T >::append(), Aleph::PersistentHashMap< Key, T, Cmp >::append_entry(), Aleph::PersistentHashMap< Key, T, Cmp >::bit(), Aleph::PersistentHashMap< Key, T, Cmp >::BITMAP, Aleph::PersistentHashMap< Key, T, Cmp >::bitpos(), Aleph::PersistentHashMap< Key, T, Cmp >::BITS_PER_LEVEL, Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::index(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, Aleph::PersistentHashMap< Key, T, Cmp >::make_leaf_from_value(), Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves(), Aleph::replace(), Aleph::Array< T >::reserve(), and value.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), and Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign().
|
inline |
Return a new version with key bound to value.
| key | Key to insert or update. |
| value | Mapped value to copy into the returned version. |
| std::bad_alloc | or whatever copying/comparison/hashing throws. |
Definition at line 782 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, Aleph::PersistentHashMap< Key, T, Cmp >::size_after_insert(), and value.
Referenced by TEST().
|
inline |
Return a new version with key bound to moved value.
| key | Key to insert or update. |
| value | Mapped value to move into the returned version. |
| std::bad_alloc | or whatever copying/moving/comparison/hashing throws. |
Definition at line 799 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::cmp_, Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, Aleph::PersistentHashMap< Key, T, Cmp >::size_after_insert(), and value.
|
inlinenoexcept |
Return true when this version has no bindings.
true iff size() == 0. | Nothing. |
Definition at line 732 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::size_.
|
inline |
Return all key/value bindings in unspecified order.
| std::bad_alloc | or whatever copying Key or T throws. |
Definition at line 872 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::collect_items(), out, Aleph::Array< T >::reserve(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, and Aleph::PersistentHashMap< Key, T, Cmp >::size().
|
inline |
Return all keys in unspecified order.
| std::bad_alloc | or whatever copying Key throws. |
Definition at line 857 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::collect_keys(), out, Aleph::Array< T >::reserve(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, and Aleph::PersistentHashMap< Key, T, Cmp >::size().
|
inlinestaticprivate |
Definition at line 225 of file tpl_persistent_hash_map.H.
References value.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::make_leaf_from_value().
|
inlinestaticprivate |
Definition at line 230 of file tpl_persistent_hash_map.H.
References value.
|
inlinestaticprivate |
Definition at line 235 of file tpl_persistent_hash_map.H.
References Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::make_leaf(), and value.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl().
|
inlineprivate |
Definition at line 256 of file tpl_persistent_hash_map.H.
References Aleph::Array< T >::append(), Aleph::PersistentHashMap< Key, T, Cmp >::bit(), Aleph::PersistentHashMap< Key, T, Cmp >::bitpos(), Aleph::PersistentHashMap< Key, T, Cmp >::BITS_PER_LEVEL, Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves(), Aleph::Array< T >::reserve(), and Aleph::PersistentHashMap< Key, T, Cmp >::Node::type.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), and Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves().
|
inlinenoexcept |
Return the number of bindings stored in this version.
| Nothing. |
Definition at line 725 of file tpl_persistent_hash_map.H.
References Aleph::PersistentHashMap< Key, T, Cmp >::size_.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::items(), Aleph::PersistentHashMap< Key, T, Cmp >::keys(), main(), TEST(), and TEST().
|
inlineprivate |
Definition at line 693 of file tpl_persistent_hash_map.H.
References ah_overflow_error_if, Aleph::blossom_maximum_cardinality_matching(), and Aleph::PersistentHashMap< Key, T, Cmp >::size_.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), and Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign().
|
inline |
Verify HAMT routing, collision, uniqueness and size invariants.
true if the internal structure is consistent. | std::overflow_error | if a diagnostic node count overflows. |
| Whatever | hash_fct_ or Cmp throws. |
Definition at line 889 of file tpl_persistent_hash_map.H.
References Aleph::and, Aleph::count(), Aleph::PersistentHashMap< Key, T, Cmp >::root_, Aleph::PersistentHashMap< Key, T, Cmp >::size_, and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
inlineprivate |
Definition at line 579 of file tpl_persistent_hash_map.H.
References ah_overflow_error_if, Aleph::and, Aleph::PersistentHashMap< Key, T, Cmp >::bit(), Aleph::PersistentHashMap< Key, T, Cmp >::BITMAP, Aleph::PersistentHashMap< Key, T, Cmp >::BITS_PER_LEVEL, Aleph::blossom_maximum_cardinality_matching(), Aleph::PersistentHashMap< Key, T, Cmp >::BRANCHING_FACTOR, Aleph::PersistentHashMap< Key, T, Cmp >::COLLISION, Aleph::PersistentHashMap< Key, T, Cmp >::collision_keys_are_unique(), Aleph::count(), Aleph::PersistentHashMap< Key, T, Cmp >::CollisionNode::entries, Aleph::PersistentHashMap< Key, T, Cmp >::hash_fct_, Aleph::PersistentHashMap< Key, T, Cmp >::hashes_match_slot(), Aleph::PersistentHashMap< Key, T, Cmp >::LEAF, Aleph::Array< T >::size(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::verify(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
staticconstexprprivate |
Definition at line 130 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::merge_leaves(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
staticconstexprprivate |
Definition at line 131 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
private |
Definition at line 197 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::collision_keys_are_unique(), Aleph::PersistentHashMap< Key, T, Cmp >::erase(), Aleph::PersistentHashMap< Key, T, Cmp >::erase_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::find_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_impl(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), and Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign().
|
private |
Definition at line 196 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::PersistentHashMap(), Aleph::PersistentHashMap< Key, T, Cmp >::erase(), Aleph::PersistentHashMap< Key, T, Cmp >::find(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify_rec().
|
staticconstexprprivate |
Definition at line 132 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::bitpos().
|
private |
Definition at line 195 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase(), Aleph::PersistentHashMap< Key, T, Cmp >::find(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), Aleph::PersistentHashMap< Key, T, Cmp >::insert_or_assign(), Aleph::PersistentHashMap< Key, T, Cmp >::items(), Aleph::PersistentHashMap< Key, T, Cmp >::keys(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify().
|
private |
Definition at line 198 of file tpl_persistent_hash_map.H.
Referenced by Aleph::PersistentHashMap< Key, T, Cmp >::erase(), Aleph::PersistentHashMap< Key, T, Cmp >::is_empty(), Aleph::PersistentHashMap< Key, T, Cmp >::size(), Aleph::PersistentHashMap< Key, T, Cmp >::size_after_insert(), and Aleph::PersistentHashMap< Key, T, Cmp >::verify().