org.bouncycastle.util

## Interface Memoable

- All Known Subinterfaces:
    SavableDigest
  All Known Implementing Classes:
    Blake3Digest, CSHAKEDigest, DSTU7564Digest, GeneralDigest, GOST3411_2012_256Digest, GOST3411_2012_512Digest, GOST3411_2012Digest, GOST3411Digest, KMAC, LongDigest, MD2Digest, MD4Digest, MD5Digest, RIPEMD128Digest, RIPEMD160Digest, RIPEMD256Digest, RIPEMD320Digest, SHA1Digest, SHA224Digest, SHA256Digest, SHA384Digest, SHA3Digest, SHA512Digest, SHA512tDigest, SHAKEDigest, SkeinDigest, SkeinEngine, SM3Digest, TigerDigest, TupleHash, WhirlpoolDigest, Zuc128CoreEngine, Zuc128Engine, Zuc256CoreEngine, Zuc256Engine

      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 resetting the object back to that state later using the reset() method.

- - ### Method Summary

    All Methods Instance Methods Abstract 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.