Package org.bouncycastle.util

## Interface Memoable

- All Known Implementing Classes:
    `DSTU7564Digest`, `GeneralDigest`, `GOST3411_2012_256Digest`, `GOST3411_2012_512Digest`, `GOST3411_2012Digest`, `GOST3411Digest`, `LongDigest`, `MD2Digest`, `MD4Digest`, `MD5Digest`, `RIPEMD128Digest`, `RIPEMD160Digest`, `RIPEMD256Digest`, `RIPEMD320Digest`, `SHA1Digest`, `SHA224Digest`, `SHA256Digest`, `SHA384Digest`, `SHA512Digest`, `SHA512tDigest`, `SkeinDigest`, `SkeinEngine`, `SM3Digest`, `TigerDigest`, `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 reseting the object back to that state later using the reset() method.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | 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.