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 Object implements StatefulHash
Base implementation for stateful hash functions.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    byte
    Returns the first byte of the output of this hash function.
    byte[]
    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
    Returns the first two bytes of the output of this hash function as a little-endian short.
    boolean
    Returns whether this hash function supports unsafe access to arbitrary memory addresses using methods such as StatefulHash.update(long, long), StatelessIntHash.calculate(long, long), or IncrementalIntHash.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
    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.Hash

    algorithm, length

    Methods inherited from interface com.scurrilous.circe.StatefulHash

    createNew, getInt, getLong, reset, supportsIncremental
  • Constructor Details

    • AbstractStatefulHash

      public AbstractStatefulHash()
  • Method Details

    • supportsUnsafe

      public boolean supportsUnsafe()
      Description copied from interface: Hash
      Returns whether this hash function supports unsafe access to arbitrary memory addresses using methods such as StatefulHash.update(long, long), StatelessIntHash.calculate(long, long), or IncrementalIntHash.resume(int, long, long). Such functions are generally implemented in native code.
      Specified by:
      supportsUnsafe in interface Hash
      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 interface StatefulHash
      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 interface StatefulHash
      Parameters:
      input - the input array
      index - the starting index of the first input byte
      length - the length of the input range
    • update

      public void update(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 interface StatefulHash
      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 interface StatefulHash
      Parameters:
      address - the base address of the input
      length - the length of the input
      See Also:
    • 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 array
      index - the starting index of the first input byte
      length - 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 interface StatefulHash
      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 interface StatefulHash
      Parameters:
      output - the destination array for the output
      index - the starting index of the first output byte
      maxLength - 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 output
      index - the starting index of the first output byte
      length - 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 interface StatefulHash
      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-endian short. If the output is less than two bytes, the remaining bytes are set to 0.
      Specified by:
      getShort in interface StatefulHash
      Returns:
      the first two output bytes as a short