aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/resources/ModifiableResources.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/resources/ModifiableResources.java')
-rw-r--r--src/jcgp/backend/resources/ModifiableResources.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/jcgp/backend/resources/ModifiableResources.java b/src/jcgp/backend/resources/ModifiableResources.java
new file mode 100644
index 0000000..3e6b55e
--- /dev/null
+++ b/src/jcgp/backend/resources/ModifiableResources.java
@@ -0,0 +1,42 @@
+package jcgp.backend.resources;
+
+import jcgp.backend.resources.parameters.BooleanParameter;
+import jcgp.backend.resources.parameters.DoubleParameter;
+import jcgp.backend.resources.parameters.IntegerParameter;
+
+/**
+ *
+ * This subclass of Resources allows modifications to be made.
+ * A read-only cast of this class is passed to modules for safety,
+ * and only classes with access to a JCGP instance may modify
+ * the resources.
+ *
+ * @author eddy
+ *
+ */
+public class ModifiableResources extends Resources {
+
+ public ModifiableResources() {
+ super();
+ }
+
+ public void set(String key, Object value) {
+ if (parameters.get(key) instanceof IntegerParameter) {
+ ((IntegerParameter) parameters.get(key)).set(((Integer) value).intValue());
+ } else if (parameters.get(key) instanceof DoubleParameter) {
+ ((DoubleParameter) parameters.get(key)).set(((Double) value).doubleValue());
+ } else if (parameters.get(key) instanceof BooleanParameter) {
+ ((BooleanParameter) parameters.get(key)).set(((Boolean) value).booleanValue());
+ }
+ }
+
+ public void setFunctionSet(int index) {
+ functionSet = functionSets[index];
+ set("arity", functionSet.getMaxArity());
+ }
+
+ public void setConsole(Console console) {
+ this.console = console;
+ }
+
+}