Memoable (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.util

## Interface Memoable

- All Known Implementing Classes:
    GeneralDigest, GOST3411Digest, LongDigest, MD2Digest, MD4Digest, MD5Digest, RIPEMD128Digest, RIPEMD160Digest, RIPEMD256Digest, RIPEMD320Digest, SHA1Digest, SHA224Digest, SHA256Digest, SHA384Digest, SHA512Digest, SHA512tDigest, SkeinDigest, SkeinEngine, SM3Digest, TigerDigest, WhirlpoolDigest

      public interface Memoable

  Interface for Memoable objects. Memoable objects allow the taking of a snapshot of their internal state via the copy() method and then reseting the object back to that state later using the reset() method.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Memoable` | `copy()` Produce a copy of this object with its configuration and in its current state.
    `void` | `reset(Memoable other)` Restore a copied object state into this object.

- - ### Method Detail

    - #### copy

          Memoable copy()

      Produce a copy of this object with its configuration and in its current state.

      The returned object may be used simply to store the state, or may be used as a similar object starting from the copied state.

    - #### reset

          void reset(Memoable other)

      Restore a copied object state into this object.

      Implementations of this method should try to avoid or minimise memory allocation to perform the reset.

      Parameters:
        `other` - an object originally `copied` from an object of the same type as this instance.
      Throws:
        `java.lang.ClassCastException` - if the provided object is not of the correct type.
        `MemoableResetException` - if the other parameter is in some other way invalid.