Package com.scurrilous.circe.impl
Class AbstractStatefulHash
- java.lang.Object
-
- com.scurrilous.circe.impl.AbstractStatefulHash
-
- All Implemented Interfaces:
Hash
,StatefulHash
- Direct Known Subclasses:
IncrementalIntStatefulHash
,IncrementalLongStatefulHash
,JavaCrc32
public abstract class AbstractStatefulHash extends java.lang.Object implements StatefulHash
Base implementation for stateful hash functions.
-
-
Constructor Summary
Constructors Constructor Description AbstractStatefulHash()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description byte
getByte()
Returns the first byte of the output of this hash function.byte[]
getBytes()
Returns a new byte array containing the output of this hash function.int
getBytes(byte[] output, int index, int maxLength)
Writes the output of this hash function into the given byte array at the given offset.short
getShort()
Returns the first two bytes of the output of this hash function as a little-endianshort
.boolean
supportsUnsafe()
Returns whether this hash function supports unsafe access to arbitrary memory addresses using methods such asStatefulHash.update(long, long)
,StatelessIntHash.calculate(long, long)
, orIncrementalIntHash.resume(int, long, long)
.void
update(byte[] input)
Updates the state of this hash function with the entire given input array.void
update(byte[] input, int index, int length)
Updates the state of this hash function with the given range of the given input array.void
update(long address, long length)
Updates the state of this hash function with memory with the given address and length.void
update(java.nio.ByteBuffer input)
Updates the state of this hash function with the remaining contents of the given input buffer.protected abstract void
updateUnchecked(byte[] input, int index, int length)
Updates the state of this hash function with the given range of the given input array.protected void
writeBytes(byte[] output, int index, int length)
Writes the output of this hash function into the given range of the given byte array.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.scurrilous.circe.StatefulHash
createNew, getInt, getLong, reset, supportsIncremental
-
-
-
-
Method Detail
-
supportsUnsafe
public boolean supportsUnsafe()
Description copied from interface:Hash
Returns whether this hash function supports unsafe access to arbitrary memory addresses using methods such asStatefulHash.update(long, long)
,StatelessIntHash.calculate(long, long)
, orIncrementalIntHash.resume(int, long, long)
. Such functions are generally implemented in native code.- Specified by:
supportsUnsafe
in interfaceHash
- Returns:
- true if unsafe access is supported, false if not
-
update
public void update(byte[] input)
Description copied from interface:StatefulHash
Updates the state of this hash function with the entire given input array.- Specified by:
update
in interfaceStatefulHash
- Parameters:
input
- the input array
-
update
public void update(byte[] input, int index, int length)
Description copied from interface:StatefulHash
Updates the state of this hash function with the given range of the given input array.- Specified by:
update
in interfaceStatefulHash
- Parameters:
input
- the input arrayindex
- the starting index of the first input bytelength
- the length of the input range
-
update
public void update(java.nio.ByteBuffer input)
Description copied from interface:StatefulHash
Updates the state of this hash function with the remaining contents of the given input buffer. This method leaves the buffer position at the limit.- Specified by:
update
in interfaceStatefulHash
- Parameters:
input
- the input buffer
-
update
public void update(long address, long length)
Description copied from interface:StatefulHash
Updates the state of this hash function with memory with the given address and length. The arguments are generally not checked in any way and will likely lead to a VM crash or undefined results if invalid.- Specified by:
update
in interfaceStatefulHash
- Parameters:
address
- the base address of the inputlength
- the length of the input- See Also:
Hash.supportsUnsafe()
-
updateUnchecked
protected abstract void updateUnchecked(byte[] input, int index, int length)
Updates the state of this hash function with the given range of the given input array. The index and length parameters have already been validated.- Parameters:
input
- the input arrayindex
- the starting index of the first input bytelength
- the length of the input range
-
getBytes
public byte[] getBytes()
Description copied from interface:StatefulHash
Returns a new byte array containing the output of this hash function. The caller may freely modify the contents of the array.- Specified by:
getBytes
in interfaceStatefulHash
- Returns:
- a new byte array containing the hash output
-
getBytes
public int getBytes(byte[] output, int index, int maxLength)
Description copied from interface:StatefulHash
Writes the output of this hash function into the given byte array at the given offset.- Specified by:
getBytes
in interfaceStatefulHash
- Parameters:
output
- the destination array for the outputindex
- the starting index of the first output bytemaxLength
- the maximum number of bytes to write- Returns:
- the number of bytes written
-
writeBytes
protected void writeBytes(byte[] output, int index, int length)
Writes the output of this hash function into the given range of the given byte array. The inputs have already been validated.- Parameters:
output
- the destination array for the outputindex
- the starting index of the first output bytelength
- the number of bytes to write
-
getByte
public byte getByte()
Description copied from interface:StatefulHash
Returns the first byte of the output of this hash function.- Specified by:
getByte
in interfaceStatefulHash
- Returns:
- the first output byte
-
getShort
public short getShort()
Description copied from interface:StatefulHash
Returns the first two bytes of the output of this hash function as a little-endianshort
. If the output is less than two bytes, the remaining bytes are set to 0.- Specified by:
getShort
in interfaceStatefulHash
- Returns:
- the first two output bytes as a short
-
-