1 package era.mi.logic.types;
4 * Interface for types that support the basic logic operations
6 * @author Christian Femers
8 * @param <T> the logic type itself, to make the operations closed in T
9 * @param <S> the operand type, may be the same as T, see {@link StrictLogicType}
11 public interface LogicType<T extends LogicType<T, S>, S>
14 * Determines the result when two signals meet each other directly, also called resolution (IEEE 1164)
25 * @param t the second logic signal
26 * @return the resulting value
27 * @author Christian Femers
43 * @param t the second logic signal
44 * @return the resulting value
45 * @author Christian Femers
61 * @param t the second logic signal
62 * @return the resulting value
63 * @author Christian Femers
68 * Classical logic XOR (exclusive OR)
79 * @param t the second logic signal
80 * @return the resulting value
81 * @author Christian Femers
86 * Classical logic NOT (logical negation)
95 * @return the resulting value
96 * @author Christian Femers
101 * {@link #and(Object) AND} and then {@link #not() NOT}
103 * @author Christian Femers
111 * {@link #or(Object) OR} and then {@link #not() NOT}
113 * @author Christian Femers
121 * {@link #xor(Object) XOR} and then {@link #not() NOT}<br>
122 * Used to determine equality (alias parity, consistency)
124 * @author Christian Femers