STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Protected Types | Protected Member Functions | Private Attributes | Static Private Attributes | List of all members
__gnu_pbds::detail::mask_based_range_hashing< Size_Type > Class Template Reference

Range hashing policy. More...

#include <ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp>

Inheritance diagram for __gnu_pbds::detail::mask_based_range_hashing< Size_Type >:
__gnu_pbds::direct_mask_range_hashing< Size_Type >

Protected Types

typedef Size_Type size_type
 

Protected Member Functions

void swap (mask_based_range_hashing &other)
 
void notify_resized (size_type size)
 
size_type range_hash (size_type hash) const
 

Private Attributes

size_type m_mask
 

Static Private Attributes

static const size_type s_num_bits_in_size_type
 
static const size_type s_highest_bit_1 = static_cast<typename mask_based_range_hashing<Size_Type>::size_type>(1) << (s_num_bits_in_size_type - 1)
 

Detailed Description

template<typename Size_Type>
class __gnu_pbds::detail::mask_based_range_hashing< Size_Type >

Range hashing policy.

Member Typedef Documentation

template<typename Size_Type>
typedef Size_Type __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::size_type
protected

Member Function Documentation

template<typename Size_Type >
void __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::notify_resized ( size_type  size)
protected
85  {
86  size_type i = 0;
87  while (size ^ s_highest_bit_1)
88  {
89  size <<= 1;
90  ++i;
91  }
92 
93  m_mask = 1;
94  i += 2;
95  while (i++ < s_num_bits_in_size_type)
96  m_mask = (m_mask << 1) ^ 1;
97  }
Size_Type size_type
Definition: mask_based_range_hashing.hpp:53
static const size_type s_num_bits_in_size_type
Definition: mask_based_range_hashing.hpp:68
static const size_type s_highest_bit_1
Definition: mask_based_range_hashing.hpp:69
size_type m_mask
Definition: mask_based_range_hashing.hpp:67
template<typename Size_Type>
size_type __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::range_hash ( size_type  hash) const
inlineprotected
64  { return size_type(hash & m_mask); }
Size_Type size_type
Definition: mask_based_range_hashing.hpp:53
size_type m_mask
Definition: mask_based_range_hashing.hpp:67
template<typename Size_Type>
void __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::swap ( mask_based_range_hashing< Size_Type > &  other)
inlineprotected
57  { std::swap(m_mask, other.m_mask); }
size_type m_mask
Definition: mask_based_range_hashing.hpp:67
void swap(exception_ptr &__lhs, exception_ptr &__rhs)
Definition: exception_ptr.h:160

Member Data Documentation

template<typename Size_Type>
size_type __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::m_mask
private
template<typename Size_Type>
const mask_based_range_hashing< Size_Type >::size_type __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::s_highest_bit_1 = static_cast<typename mask_based_range_hashing<Size_Type>::size_type>(1) << (s_num_bits_in_size_type - 1)
staticprivate
template<typename Size_Type>
const mask_based_range_hashing< Size_Type >::size_type __gnu_pbds::detail::mask_based_range_hashing< Size_Type >::s_num_bits_in_size_type
staticprivate
Initial value:
=
sizeof(typename mask_based_range_hashing<Size_Type>::size_type) << 3

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