Package com.scurrilous.circe.impl
Class AbstractIncrementalLongHash
- java.lang.Object
-
- com.scurrilous.circe.impl.AbstractIncrementalLongHash
-
- All Implemented Interfaces:
Hash,IncrementalLongHash,StatelessHash,StatelessLongHash
- Direct Known Subclasses:
AbstractLongCrc
public abstract class AbstractIncrementalLongHash extends java.lang.Object implements IncrementalLongHash
Base implementation for incremental stateless long integer hash functions.
-
-
Constructor Summary
Constructors Constructor Description AbstractIncrementalLongHash()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description longcalculate(byte[] input)Evaluates this hash function for the entire given input array.longcalculate(byte[] input, int index, int length)Evaluates this hash function for the given range of the given input array.longcalculate(long address, long length)Evaluates this hash function for the memory with the given address and length.longcalculate(java.nio.ByteBuffer input)Evaluates this hash function with the remaining contents of the given input buffer.StatefulLongHashcreateStateful()Returns a new instance of stateful version of this hash function.protected abstract longinitial()The initial state of the hash function, which is the same as the output value for an empty input sequence.longresume(long current, byte[] input)Evaluates this hash function as if the entire given input array were appended to the previously hashed input.longresume(long current, byte[] input, int index, int length)Evaluates this hash function as if the given range of the given input array were appended to the previously hashed input.longresume(long current, long address, long length)Evaluates this hash function as if the memory with the given address and length were appended to the previously hashed input.longresume(long current, java.nio.ByteBuffer input)Evaluates this hash function as if the remaining contents of the given input buffer were appended to the previously hashed input.protected abstract longresumeUnchecked(long current, byte[] input, int index, int length)Evaluates this hash function as if the given range of the given input array were appended to the previously hashed input.booleansupportsUnsafe()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).
-
-
-
Method Detail
-
supportsUnsafe
public boolean supportsUnsafe()
Description copied from interface:HashReturns 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:
supportsUnsafein interfaceHash- Returns:
- true if unsafe access is supported, false if not
-
createStateful
public StatefulLongHash createStateful()
Description copied from interface:StatelessLongHashReturns a new instance of stateful version of this hash function.- Specified by:
createStatefulin interfaceStatelessHash- Specified by:
createStatefulin interfaceStatelessLongHash- Returns:
- the stateful version of this hash function
-
calculate
public long calculate(byte[] input)
Description copied from interface:StatelessLongHashEvaluates this hash function for the entire given input array.- Specified by:
calculatein interfaceStatelessLongHash- Parameters:
input- the input array- Returns:
- the output of the hash function
-
calculate
public long calculate(byte[] input, int index, int length)Description copied from interface:StatelessLongHashEvaluates this hash function for the given range of the given input array.- Specified by:
calculatein interfaceStatelessLongHash- Parameters:
input- the input arrayindex- the starting index of the first input bytelength- the length of the input range- Returns:
- the output of the hash function
-
calculate
public long calculate(java.nio.ByteBuffer input)
Description copied from interface:StatelessLongHashEvaluates this hash function with the remaining contents of the given input buffer. This method leaves the buffer position at the limit.- Specified by:
calculatein interfaceStatelessLongHash- Parameters:
input- the input buffer- Returns:
- the output of the hash function
-
calculate
public long calculate(long address, long length)Description copied from interface:StatelessLongHashEvaluates this hash function for the 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:
calculatein interfaceStatelessLongHash- Parameters:
address- the base address of the inputlength- the length of the input- Returns:
- the output of the hash function
- See Also:
Hash.supportsUnsafe()
-
resume
public long resume(long current, byte[] input)Description copied from interface:IncrementalLongHashEvaluates this hash function as if the entire given input array were appended to the previously hashed input.- Specified by:
resumein interfaceIncrementalLongHash- Parameters:
current- the hash output for input hashed so farinput- the input array- Returns:
- the output of the hash function for the concatenated input
-
resume
public long resume(long current, byte[] input, int index, int length)Description copied from interface:IncrementalLongHashEvaluates this hash function as if the given range of the given input array were appended to the previously hashed input.- Specified by:
resumein interfaceIncrementalLongHash- Parameters:
current- the hash output for input hashed so farinput- the input arrayindex- the starting index of the first input bytelength- the length of the input range- Returns:
- the output of the hash function for the concatenated input
-
resume
public long resume(long current, java.nio.ByteBuffer input)Description copied from interface:IncrementalLongHashEvaluates this hash function as if the remaining contents of the given input buffer were appended to the previously hashed input. This method leaves the buffer position at the limit.- Specified by:
resumein interfaceIncrementalLongHash- Parameters:
current- the hash output for input hashed so farinput- the input buffer- Returns:
- the output of the hash function for the concatenated input
-
resume
public long resume(long current, long address, long length)Description copied from interface:IncrementalLongHashEvaluates this hash function as if the memory with the given address and length were appended to the previously hashed input. The arguments are generally not checked in any way and will likely lead to a VM crash or undefined results if invalid.- Specified by:
resumein interfaceIncrementalLongHash- Parameters:
current- the hash output for input hashed so faraddress- the base address of the inputlength- the length of the input- Returns:
- the output of the hash function for the concatenated input
- See Also:
Hash.supportsUnsafe()
-
initial
protected abstract long initial()
The initial state of the hash function, which is the same as the output value for an empty input sequence.- Returns:
- the initial hash state/output
-
resumeUnchecked
protected abstract long resumeUnchecked(long current, byte[] input, int index, int length)Evaluates this hash function as if the given range of the given input array were appended to the previously hashed input. The index and length parameters have already been validated.- Parameters:
current- the hash output for input hashed so farinput- the input arrayindex- the starting index of the first input bytelength- the length of the input range- Returns:
- the output of the hash function for the concatenated input
-
-