A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
Murmur3 Hash Implementation
+ Collaboration diagram for Murmur3 Hash Implementation:

Macros

#define BIG_CONSTANT(x)   (x##LLU)
 Unsigned long long constants.
 

Functions

uint32_t ns3::Hash::Function::Murmur3Implementation::fmix (uint32_t h)
 Finalization mix - force all bits of a hash block to avalanche.
 
uint64_t ns3::Hash::Function::Murmur3Implementation::fmix (uint64_t h)
 Finalization mix - force all bits of a hash block to avalanche.
 
uint32_t ns3::Hash::Function::Murmur3Implementation::getblock (const uint32_t *p, std::size_t i)
 Block read.
 
uint64_t ns3::Hash::Function::Murmur3Implementation::getblock (const uint64_t *p, std::size_t i)
 Block read.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x64_128 (const void *key, const std::size_t len, const uint32_t seed, void *out)
 Initial and incremental hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128 (const void *key, const std::size_t len, uint32_t seed, void *out)
 Initial and incremental hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_fin (const std::size_t len, uint32_t *seeds, void *out)
 Finalize a hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_incr (const void *key, const std::size_t len, uint32_t *seeds, void *out)
 Initial and incremental hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32 (const void *key, std::size_t len, uint32_t seed, void *out)
 Initial and incremental hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_fin (std::size_t len, uint32_t seed, void *out)
 Finalize a hash.
 
void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_incr (const void *key, std::size_t len, uint32_t seed, void *out)
 Initial and incremental hash.
 
uint32_t ns3::Hash::Function::Murmur3Implementation::rotl32 (uint32_t x, int8_t r)
 Barrel shift (rotate) left on 32 bits.
 
uint64_t ns3::Hash::Function::Murmur3Implementation::rotl64 (uint64_t x, int8_t r)
 Barrel shift (rotate) left on 64 bits.
 

Detailed Description

Macro Definition Documentation

◆ BIG_CONSTANT

#define BIG_CONSTANT ( x)    (x##LLU)

Function Documentation

◆ fmix() [1/2]

uint32_t ns3::Hash::Function::Murmur3Implementation::fmix ( uint32_t h)
inline

Finalization mix - force all bits of a hash block to avalanche.

Parameters
[in]hFinal word of the hash block.
Returns
Fully mixed final word.

Definition at line 136 of file hash-murmur3.cc.

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x64_128(), ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_fin(), and ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_fin().

+ Here is the caller graph for this function:

◆ fmix() [2/2]

uint64_t ns3::Hash::Function::Murmur3Implementation::fmix ( uint64_t h)
inline

Finalization mix - force all bits of a hash block to avalanche.

Parameters
[in]hFinal word of the hash block.
Returns
Fully mixed final word.

Definition at line 149 of file hash-murmur3.cc.

References BIG_CONSTANT.

◆ getblock() [1/2]

uint32_t ns3::Hash::Function::Murmur3Implementation::getblock ( const uint32_t * p,
std::size_t i )
inline

Block read.

If your platform needs to do endian-swapping or can only handle aligned reads, do the conversion here.

Parameters
[in]pBlock base address.
[in]iIndex into the block.
Returns
The i'th word from the block.

Definition at line 119 of file hash-murmur3.cc.

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x64_128(), ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_incr(), and ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_incr().

+ Here is the caller graph for this function:

◆ getblock() [2/2]

uint64_t ns3::Hash::Function::Murmur3Implementation::getblock ( const uint64_t * p,
std::size_t i )
inline

Block read.

If your platform needs to do endian-swapping or can only handle aligned reads, do the conversion here.

Parameters
[in]pBlock base address.
[in]iIndex into the block.
Returns
The i'th word from the block.

Definition at line 124 of file hash-murmur3.cc.

◆ MurmurHash3_x64_128()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x64_128 ( const void * key,
const std::size_t len,
const uint32_t seed,
void * out )

Initial and incremental hash.

Parameters
[in]keyData to be hashed.
[in]lenNumber of words in the key.
[in]seedInitial or current hash state.
[out]outOutput hash value.

Definition at line 422 of file hash-murmur3.cc.

References BIG_CONSTANT, data, ns3::Hash::Function::Murmur3Implementation::fmix(), ns3::Hash::Function::Murmur3Implementation::getblock(), and ns3::Hash::Function::Murmur3Implementation::rotl64().

+ Here is the call graph for this function:

◆ MurmurHash3_x86_128()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128 ( const void * key,
const std::size_t len,
uint32_t seed,
void * out )

Initial and incremental hash.

Parameters
[in]keyData to be hashed.
[in]lenNumber of words in the key.
[in]seedInitial or current hash state.
[out]outOutput hash value.

Definition at line 290 of file hash-murmur3.cc.

References ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_fin(), and ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_incr().

+ Here is the call graph for this function:

◆ MurmurHash3_x86_128_fin()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_fin ( const std::size_t len,
uint32_t * seeds,
void * out )

Finalize a hash.

Parameters
[in]lenTotal number of words that have gone in to the hash.
[in]seedsInitial or current hash state.
[out]outOutput hash value.

Definition at line 390 of file hash-murmur3.cc.

References ns3::Hash::Function::Murmur3Implementation::fmix().

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MurmurHash3_x86_128_incr()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_incr ( const void * key,
const std::size_t len,
uint32_t * seeds,
void * out )

Initial and incremental hash.

Parameters
[in]keyData to be hashed.
[in]lenNumber of words in the key.
[in]seedsInitial or current hash state.
[out]outOutput hash value.

Definition at line 300 of file hash-murmur3.cc.

References data, ns3::Hash::Function::Murmur3Implementation::getblock(), and ns3::Hash::Function::Murmur3Implementation::rotl32().

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MurmurHash3_x86_32()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32 ( const void * key,
std::size_t len,
uint32_t seed,
void * out )

Initial and incremental hash.

Parameters
[in]keyData to be hashed.
[in]lenNumber of words in the key.
[in]seedInitial or current hash state.
[out]outOutput hash value.

Definition at line 185 of file hash-murmur3.cc.

References ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_fin(), and ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_incr().

+ Here is the call graph for this function:

◆ MurmurHash3_x86_32_fin()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_fin ( std::size_t len,
uint32_t seed,
void * out )

Finalize a hash.

Parameters
[in]lenTotal number of words that have gone in to the hash.
[in]seedInitial or current hash state.
[out]outOutput hash value.

Definition at line 243 of file hash-murmur3.cc.

References ns3::Hash::Function::Murmur3Implementation::fmix().

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MurmurHash3_x86_32_incr()

void ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_incr ( const void * key,
std::size_t len,
uint32_t seed,
void * out )

Initial and incremental hash.

Parameters
[in]keyData to be hashed.
[in]lenNumber of words in the key.
[in]seedInitial or current hash state.
[out]outOutput hash value.

Definition at line 193 of file hash-murmur3.cc.

References data, ns3::Hash::Function::Murmur3Implementation::getblock(), and ns3::Hash::Function::Murmur3Implementation::rotl32().

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rotl32()

uint32_t ns3::Hash::Function::Murmur3Implementation::rotl32 ( uint32_t x,
int8_t r )
inline

Barrel shift (rotate) left on 32 bits.

Parameters
[in]xThe initial value.
[in]rThe number of bit positions to rotate.
Returns
The rotated value.

Definition at line 88 of file hash-murmur3.cc.

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_128_incr(), and ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x86_32_incr().

+ Here is the caller graph for this function:

◆ rotl64()

uint64_t ns3::Hash::Function::Murmur3Implementation::rotl64 ( uint64_t x,
int8_t r )
inline

Barrel shift (rotate) left on 64 bits.

Parameters
[in]xThe initial value.
[in]rThe number of bit positions to rotate.
Returns
The rotated value.

Definition at line 100 of file hash-murmur3.cc.

Referenced by ns3::Hash::Function::Murmur3Implementation::MurmurHash3_x64_128().

+ Here is the caller graph for this function: