116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropackage org.bouncycastle.util; 216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 3bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro/** 4bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * Interface for Memoable objects. Memoable objects allow the taking of a snapshot of their internal state 5bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * via the copy() method and then reseting the object back to that state later using the reset() method. 6bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro */ 716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropublic interface Memoable 816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro{ 916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro /** 1016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * Produce a copy of this object with its configuration and in its current state. 1153b61f9fe9d58034fcc7021137e92460f91b70ceSergio Giro * <p> 1216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * The returned object may be used simply to store the state, or may be used as a similar object 1316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * starting from the copied state. 1416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro */ 15bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro Memoable copy(); 1616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 1716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro /** 1816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * Restore a copied object state into this object. 1953b61f9fe9d58034fcc7021137e92460f91b70ceSergio Giro * <p> 2016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * Implementations of this method <em>should</em> try to avoid or minimise memory allocation to perform the reset. 2116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * 2216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * @param other an object originally {@link #copy() copied} from an object of the same type as this instance. 2316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * @throws ClassCastException if the provided object is not of the correct type. 2416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * @throws MemoableResetException if the <b>other</b> parameter is in some other way invalid. 2516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro */ 26bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro void reset(Memoable other); 2716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro} 28