A Discrete-Event Network Simulator
API
Murmur3 Hash Implementation
+ Collaboration diagram for Murmur3 Hash Implementation:

Macros

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

Functions

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

Detailed Description

Macro Definition Documentation

◆ BIG_CONSTANT

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

Unsigned long long constants.

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

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 143 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 156 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 126 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 131 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 429 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 297 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 397 of file hash-murmur3.cc.

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

Referenced by ns3::Hash::Function::Murmur3::GetHash64(), and 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 307 of file hash-murmur3.cc.

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

Referenced by ns3::Hash::Function::Murmur3::GetHash64(), and 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 192 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 250 of file hash-murmur3.cc.

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

Referenced by ns3::Hash::Function::Murmur3::GetHash32(), and 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 200 of file hash-murmur3.cc.

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

Referenced by ns3::Hash::Function::Murmur3::GetHash32(), and 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 95 of file hash-murmur3.cc.

References sample-rng-plot::x.

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 107 of file hash-murmur3.cc.

References sample-rng-plot::x.

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

+ Here is the caller graph for this function: