View source code
Display the source code in std/digest/murmurhash.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Struct std.digest.murmurhash.MurmurHash3
Implements the MurmurHash3 functions. You can specify the size
of the
hash in bit. For 128 bit hashes you can specify whether to optimize for 32
or 64 bit architectures. If you don't specify the opt
value it will select
the fastest version of the host platform.
struct MurmurHash3(uint size, uint opt = size_t .sizeof == 8 ? 64 : 32)
;
This hasher is compatible with the Digest
API:
It also provides a faster, low level API working with data of size
Element
:
void putElements(scope const(Element[]) elements...)
void putRemainder(scope const(ubyte[]) data...)
void finalize()
Element get()
ubyte[Element
.sizeof] getBytes()
Methods
Name | Description |
---|---|
finalize
|
Incorporate element_count and finalizes the hash.
|
finish
|
Finalizes the computation of the hash and returns the computed value.
Note that finish can be called only once and that no subsequent calls
to put is allowed.
|
get
|
Returns the hash as an uint value. |
getBytes
|
Returns the current hashed value as an ubyte array. |
put
|
Adds data to the digester. This function can be called many times in a row after start but before finish. |
putElement
|
Adds a single Element of data without increasing element_count .
Make sure to increase element_count by Element for each call to putElement .
|
putElements
|
Pushes an array of elements at once. It is more efficient to push as much data as possible in a single call. On platforms that do not support unaligned reads (MIPS or old ARM chips), the compiler may produce slower code to ensure correctness. |
putRemainder
|
Put remainder bytes. This must be called only once after putElement and before finalize .
|
Aliases
Name | Description |
---|---|
Element
|
The element type for 32-bit implementation. |
Example
The convenient digest template allows for quick hashing of any data.
ubyte[4] hashed = digest!(MurmurHash3!32)([1, 2, 3, 4]);
writeln(hashed); // [0, 173, 69, 68]
Example
One can also hash ubyte data piecewise by instanciating a hasher and call the 'put' method.
const(ubyte)[] data1 = [1, 2, 3];
const(ubyte)[] data2 = [4, 5, 6, 7];
// The incoming data will be buffered and hashed element by element.
MurmurHash3!32 hasher;
hasher .put(data1);
hasher .put(data2);
// The call to 'finish' ensures:
// - the remaining bits are processed
// - the hash gets finalized
auto hashed = hasher .finish();
writeln(hashed); // [181, 151, 88, 252]
Authors
Guillaume Chatelet
License
Copyright © 1999-2018 by the D Language Foundation | Page generated by ddox.