1 /*
2  * Copyright (c) 2019 Helmut Neemann.
3  * Use of this source code is governed by the GPL v3 license
4  * that can be found in the LICENSE file.
5  */
6 package de.neemann.digital.undo;
7 
8 /**
9  * Abstraction of a modification done on a object.
10  * Make sure that EVERY modification is done via this interface!
11  *
12  * @param <A> the type of the object to modify
13  */
14 public interface Modification<A> {
15 
16     /**
17      * Modifies the object
18      *
19      * @param a the object to modify
20      * @throws ModifyException ModifyException
21      */
modify(A a)22     void modify(A a) throws ModifyException;
23 }
24