aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::HashFunc< Debug > Class Reference

Hash function for gum::Debug. More...

#include <agrum/base/core/hashFunc.h>

Inheritance diagram for gum::HashFunc< Debug >:
Collaboration diagram for gum::HashFunc< Debug >:

Public Member Functions

virtual Size operator() (const Debug &key) const override final
 Computes the hashed value of a key.
void resize (const Size new_size)
 Update the hash function to take into account a resize of the hash table.
Size size () const
 Returns the hash table size as known by the hash function.

Static Public Member Functions

static Size castToSize (const Debug &key)
 Returns the value of a key as a Size.

Protected Attributes

Size hash_size_
 The size of the hash table.
unsigned int hash_log2_size_
 Log of the number of slots of the hash table in base 2.
Size hash_mask_
 performing y = x & hash_mask_ guarantees that y is a slot index of the hash table
unsigned int right_shift_
 performing y = x >> right_shift_ guarantees that y is a slot index of the hash table

Friends

template<typename OTHER_KEY>
class HashFunc

Detailed Description

Hash function for gum::Debug.

Definition at line 645 of file hashFunc.h.

Member Function Documentation

◆ castToSize()

Size gum::HashFunc< Debug >::castToSize ( const Debug & key)
static

Returns the value of a key as a Size.

Parameters
keyThe value to return as a Size.
Returns
Returns the value of a key as a Size.

◆ operator()()

virtual Size gum::HashFunc< Debug >::operator() ( const Debug & key) const
finaloverridevirtual

Computes the hashed value of a key.

Parameters
keyThe key to compute the hashed value.
Returns
Returns the hashed value of a key.

Implements gum::HashFuncBase< Debug >.

◆ resize()

void gum::HashFuncBase< Debug >::resize ( const Size new_size)
inherited

Update the hash function to take into account a resize of the hash table.

When the user wishes to resize the gum::HashTable so that the array is of size s, the gum::HashTable resizes itself to the smallest power of 2 greater than or equal to s. This new size is computed by function gum::HashFuncBase::resize(gum::Size). Hence, s should be the size of the array of lists, not the number of elements stored into the gum::HashTable.

Parameters
new_sizeThe hashtable's size wished by the user. Actually, a hashtable of size n is an array of n lists.
Exceptions
SizeErrorRaised if s is too small.

◆ size()

Size gum::HashFuncBase< Debug >::size ( ) const
inherited

Returns the hash table size as known by the hash function.

Returns
Returns the size of the hash table, i.e., the number of slots (lists) it contains.

◆ HashFunc

template<typename OTHER_KEY>
friend class HashFunc
friend

Definition at line 662 of file hashFunc.h.

References HashFunc.

Referenced by HashFunc.

Member Data Documentation

◆ hash_log2_size_

unsigned int gum::HashFuncBase< Debug >::hash_log2_size_
protectedinherited

Log of the number of slots of the hash table in base 2.

Definition at line 224 of file hashFunc.h.

224{0};

◆ hash_mask_

Size gum::HashFuncBase< Debug >::hash_mask_
protectedinherited

performing y = x & hash_mask_ guarantees that y is a slot index of the hash table

To transform a Size x into a slot index of the hash table, you can either use x & hash_mask_ or x >> right_shift_ depending on whether you want to exploit the least significant bits of x (&) or the most significant one (>>).

Definition at line 235 of file hashFunc.h.

235{Size(0)};
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74

◆ hash_size_

Size gum::HashFuncBase< Debug >::hash_size_
protectedinherited

The size of the hash table.

Definition at line 221 of file hashFunc.h.

221{Size(0)};

◆ right_shift_

unsigned int gum::HashFuncBase< Debug >::right_shift_
protectedinherited

performing y = x >> right_shift_ guarantees that y is a slot index of the hash table

To transform a Size x into a slot index of the hash table, you can either use x & hash_mask_ or x >> right_shift_ depending on whether you want to exploit the least significant bits of x (&) or the most significant one (>>).

Definition at line 246 of file hashFunc.h.

246{0};

The documentation for this class was generated from the following file: