proxygen
Hash.h File Reference
#include <cstdint>
#include <cstring>
#include <limits>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <folly/Traits.h>
#include <folly/Utility.h>
#include <folly/functional/ApplyTuple.h>
#include <folly/hash/SpookyHashV1.h>
#include <folly/hash/SpookyHashV2.h>
#include <folly/lang/Bits.h>

Go to the source code of this file.

Classes

struct  folly::detail::integral_hasher< I >
 
struct  folly::detail::float_hasher< F >
 
struct  folly::hasher< Key, Enable >
 
struct  folly::Hash
 
struct  folly::IsAvalanchingHasher< Hasher, Key >
 
struct  folly::detail::IsAvalanchingHasherFromMemberType< Hasher, Void >
 
struct  folly::detail::IsAvalanchingHasherFromMemberType< Hasher, void_t< typename Hasher::folly_is_avalanching > >
 
struct  folly::IsAvalanchingHasher< Hasher, Key >
 
struct  folly::IsAvalanchingHasher< transparent< H >, K >
 
struct  folly::IsAvalanchingHasher< Hash, K >
 
struct  folly::hasher< bool >
 
struct  folly::IsAvalanchingHasher< hasher< bool >, K >
 
struct  folly::hasher< unsigned long long >
 
struct  folly::hasher< signed long long >
 
struct  folly::hasher< unsigned long >
 
struct  folly::hasher< signed long >
 
struct  folly::hasher< unsigned int >
 
struct  folly::hasher< signed int >
 
struct  folly::hasher< unsigned short >
 
struct  folly::hasher< signed short >
 
struct  folly::hasher< unsigned char >
 
struct  folly::hasher< signed char >
 
struct  folly::hasher< char >
 
struct  folly::hasher< float >
 
struct  folly::hasher< double >
 
struct  folly::hasher< std::string >
 
struct  folly::IsAvalanchingHasher< hasher< std::string >, K >
 
struct  folly::hasher< T, std::enable_if_t< std::is_enum< T >::value > >
 
struct  folly::IsAvalanchingHasher< hasher< T, std::enable_if_t< std::is_enum< T >::value > >, K >
 
struct  folly::hasher< std::pair< T1, T2 > >
 
struct  folly::hasher< std::tuple< Ts... > >
 
struct  folly::IsAvalanchingHasher< hasher< std::tuple< T > >, K >
 
struct  folly::IsAvalanchingHasher< hasher< std::tuple< T1, T2, Ts... > >, K >
 
class  folly::hash::StdHasher
 
struct  folly::TupleHasher< index, Ts >
 
struct  folly::TupleHasher< 0, Ts... >
 
struct  std::hash< std::pair< T1, T2 > >
 
struct  std::hash< std::tuple< Ts... > >
 
struct  folly::IsAvalanchingHasher< std::hash< std::basic_string< Args... > >, K >
 

Namespaces

 folly
 —— Concurrent Priority Queue Implementation ——
 
 folly::hash
 
 folly::detail
 
 folly::hash::detail
 

Macros

#define get16bits(d)   folly::loadUnaligned<uint16_t>(d)
 

Typedefs

using folly::hash::detail::c_array_size_t = size_t[]
 

Functions

uint64_t folly::hash::hash_128_to_64 (const uint64_t upper, const uint64_t lower) noexcept
 
uint64_t folly::hash::twang_mix64 (uint64_t key) noexcept
 
uint64_t folly::hash::twang_unmix64 (uint64_t key) noexcept
 
uint32_t folly::hash::twang_32from64 (uint64_t key) noexcept
 
uint32_t folly::hash::jenkins_rev_mix32 (uint32_t key) noexcept
 
uint32_t folly::hash::jenkins_rev_unmix32 (uint32_t key) noexcept
 
uint32_t folly::hash::fnv32 (const char *buf, uint32_t hash=FNV_32_HASH_START) noexcept
 
uint32_t folly::hash::fnv32_buf (const void *buf, size_t n, uint32_t hash=FNV_32_HASH_START) noexcept
 
uint32_t folly::hash::fnv32 (const std::string &str, uint32_t hash=FNV_32_HASH_START) noexcept
 
uint64_t folly::hash::fnv64 (const char *buf, uint64_t hash=FNV_64_HASH_START) noexcept
 
uint64_t folly::hash::fnv64_buf (const void *buf, size_t n, uint64_t hash=FNV_64_HASH_START) noexcept
 
uint64_t folly::hash::fnv64 (const std::string &str, uint64_t hash=FNV_64_HASH_START) noexcept
 
uint64_t folly::hash::fnva64_buf (const void *buf, size_t n, uint64_t hash=FNVA_64_HASH_START) noexcept
 
uint64_t folly::hash::fnva64 (const std::string &str, uint64_t hash=FNVA_64_HASH_START) noexcept
 
uint32_t folly::hash::hsieh_hash32_buf (const void *buf, size_t len) noexcept
 
uint32_t folly::hash::hsieh_hash32 (const char *s) noexcept
 
uint32_t folly::hash::hsieh_hash32_str (const std::string &str) noexcept
 
template<class Hash , class Value >
uint64_t folly::hash::commutative_hash_combine_value_generic (uint64_t seed, Hash const &hasher, Value const &value)
 
template<class Iter , class Hash = std::hash<typename std::iterator_traits<Iter>::value_type>>
uint64_t folly::hash::hash_range (Iter begin, Iter end, uint64_t hash=0, Hash hasher=Hash())
 
template<class Hash , class Iter >
uint64_t folly::hash::commutative_hash_combine_range_generic (uint64_t seed, Hash const &hasher, Iter first, Iter last)
 
template<class Iter >
uint64_t folly::hash::commutative_hash_combine_range (Iter first, Iter last)
 
template<class Hasher >
size_t folly::hash::hash_combine_generic (const Hasher &) noexcept
 
template<class Hasher , typename T , typename... Ts>
size_t folly::hash::hash_combine_generic (const Hasher &h, const T &t, const Ts &...ts) noexcept(noexcept(detail::c_array_size_t{h(t), h(ts)...}))
 
template<typename Hash , typename... Value>
uint64_t folly::hash::commutative_hash_combine_generic (uint64_t seed, Hash const &hasher, Value const &...value)
 
template<typename T , typename... Ts>
size_t folly::hash::hash_combine (const T &t, const Ts &...ts) noexcept(noexcept(hash_combine_generic(StdHasher{}, t, ts...)))
 
template<typename... Value>
uint64_t folly::hash::commutative_hash_combine (Value const &...value)
 

Variables

const uint32_t folly::hash::FNV_32_HASH_START = 2166136261UL
 
const uint64_t folly::hash::FNV_64_HASH_START = 14695981039346656037ULL
 
const uint64_t folly::hash::FNVA_64_HASH_START = 14695981039346656037ULL
 

Macro Definition Documentation

#define get16bits (   d)    folly::loadUnaligned<uint16_t>(d)

Definition at line 244 of file Hash.h.

Referenced by folly::hash::hsieh_hash32_buf().