aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/function/FunctionSet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/function/FunctionSet.java')
-rw-r--r--src/jcgp/backend/function/FunctionSet.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/jcgp/backend/function/FunctionSet.java b/src/jcgp/backend/function/FunctionSet.java
new file mode 100644
index 0000000..4470ac8
--- /dev/null
+++ b/src/jcgp/backend/function/FunctionSet.java
@@ -0,0 +1,74 @@
+package jcgp.backend.function;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+
+/**
+ *
+ * @author Eduardo Pedroni
+ *
+ */
+public abstract class FunctionSet {
+ protected Function[] functionList;
+ protected ArrayList<Function> allowedFunctions;
+ protected String name;
+
+ public int getAllowedFunctionCount() {
+ return allowedFunctions.size();
+ }
+
+ public int getTotalFunctionCount() {
+ return functionList.length;
+ }
+
+ public Function getAllowedFunction(int index) {
+ return allowedFunctions.get(index);
+ }
+
+ public Function getFunction(int index) {
+ return functionList[index];
+ }
+
+ public int getMaxArity(){
+ int arity = 0;
+ for (Function function : allowedFunctions) {
+ if (function.getArity() > arity) {
+ arity = function.getArity();
+ }
+ }
+ return arity;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void disableFunction(int index) {
+ if (index < functionList.length) {
+ for (Iterator<Function> iterator = allowedFunctions.iterator(); iterator.hasNext();) {
+ Function function = (Function) iterator.next();
+ if (function == functionList[index]) {
+ iterator.remove();
+ }
+ }
+ } else {
+ throw new IndexOutOfBoundsException("Function " + index + " does not exist, the set only has " + functionList.length + " functions.");
+ }
+ }
+
+ public void enableFunction(int index) {
+ if (!allowedFunctions.contains(functionList[index])) {
+ allowedFunctions.add(functionList[index]);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ public boolean isEnabled(Function f) {
+ return allowedFunctions.contains(f);
+ }
+ } \ No newline at end of file