diff options
Diffstat (limited to 'src/jcgp/backend/function/DigitalCircuitFunctions.java')
-rw-r--r-- | src/jcgp/backend/function/DigitalCircuitFunctions.java | 85 |
1 files changed, 80 insertions, 5 deletions
diff --git a/src/jcgp/backend/function/DigitalCircuitFunctions.java b/src/jcgp/backend/function/DigitalCircuitFunctions.java index 31cdf17..0d4ae8e 100644 --- a/src/jcgp/backend/function/DigitalCircuitFunctions.java +++ b/src/jcgp/backend/function/DigitalCircuitFunctions.java @@ -1,10 +1,23 @@ package jcgp.backend.function; +/** + * This class contains all digital circuit functions + * (defined as unsigned integer functions in the classic + * CGP implementation) defined in static nested classes. + * <br> + * This is the function set used by DigitalCircuitProblem. + * + * @see DigitalCircuiProblem + * @author Eduardo Pedroni + * + */ public class DigitalCircuitFunctions extends FunctionSet { + /** + * Creates a new instance of DigitalCircuitFunctions. + */ public DigitalCircuitFunctions() { - name = "32-bit Logic"; - functionList = new Function[]{ + registerFunctions( new ConstantZero(), new ConstantOne(), new WireA(), @@ -25,11 +38,12 @@ public class DigitalCircuitFunctions extends FunctionSet { new Mux2(), new Mux3(), new Mux4() - }; - - enableAll(); + ); } + /** + * Outputs a constant 0, has no inputs. + */ public static class ConstantZero extends Function { @Override public UnsignedInteger run(Object... args) { @@ -47,6 +61,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Outputs a constant 1, has no inputs. + */ public static class ConstantOne extends Function { @Override public UnsignedInteger run(Object... args) { @@ -64,6 +81,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Connects one node to another with no function. + */ public static class WireA extends Function { @Override public UnsignedInteger run(Object... args) { @@ -85,6 +105,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Connects one node to another with no function. + */ public static class WireB extends Function { @Override public UnsignedInteger run(Object... args) { @@ -106,6 +129,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Inverts input, equivalent to inverter logic gate. + */ public static class NotA extends Function { @Override public UnsignedInteger run(Object... args) { @@ -127,6 +153,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Inverts input, equivalent to inverter logic gate. + */ public static class NotB extends Function { @Override public UnsignedInteger run(Object... args) { @@ -148,6 +177,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ANDs inputs together. + */ public static class And extends Function { @Override public UnsignedInteger run(Object... args) { @@ -173,6 +205,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ANDs inputs together with one input inverted. + */ public static class AndNotA extends Function { @Override public UnsignedInteger run(Object... args) { @@ -198,6 +233,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ANDs inputs together with one input inverted. + */ public static class AndNotB extends Function { @Override public UnsignedInteger run(Object... args) { @@ -223,6 +261,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * NORs inputs together. + */ public static class Nor extends Function { @Override public UnsignedInteger run(Object... args) { @@ -248,6 +289,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * XORs inputs together. + */ public static class Xor extends Function { @Override public UnsignedInteger run(Object... args) { @@ -273,6 +317,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * XNORs inputs together. + */ public static class Xnor extends Function { @Override public UnsignedInteger run(Object... args) { @@ -298,6 +345,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ORs inputs together. + */ public static class Or extends Function { @Override public UnsignedInteger run(Object... args) { @@ -323,6 +373,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ORs inputs together with one inverted input. + */ public static class OrNotA extends Function { @Override public UnsignedInteger run(Object... args) { @@ -348,6 +401,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * ORs inputs together with one inverted input. + */ public static class OrNotB extends Function { @Override public UnsignedInteger run(Object... args) { @@ -373,6 +429,9 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * NANDs inputs together. + */ public static class Nand extends Function { @Override public UnsignedInteger run(Object... args) { @@ -398,6 +457,10 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Works as a multiplexer. Outputs either one of its two inputs + * depending on a third input (select). + */ public static class Mux1 extends Function { @Override public UnsignedInteger run(Object... args) { @@ -424,6 +487,10 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Works as a multiplexer. Outputs either one of its two inputs + * depending on a third input (select). Input 0 is inverted. + */ public static class Mux2 extends Function { @Override public UnsignedInteger run(Object... args) { @@ -450,6 +517,10 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Works as a multiplexer. Outputs either one of its two inputs + * depending on a third input (select). Input 1 is inverted. + */ public static class Mux3 extends Function { @Override public UnsignedInteger run(Object... args) { @@ -476,6 +547,10 @@ public class DigitalCircuitFunctions extends FunctionSet { } } + /** + * Works as a multiplexer. Outputs either one of its two inputs + * depending on a third input (select). Both inputs are inverted. + */ public static class Mux4 extends Function { @Override public UnsignedInteger run(Object... args) { |