aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/population/MutableElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/population/MutableElement.java')
-rw-r--r--src/jcgp/backend/population/MutableElement.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/jcgp/backend/population/MutableElement.java b/src/jcgp/backend/population/MutableElement.java
new file mode 100644
index 0000000..8548e63
--- /dev/null
+++ b/src/jcgp/backend/population/MutableElement.java
@@ -0,0 +1,34 @@
+package jcgp.backend.population;
+
+public interface MutableElement {
+
+ /**
+ * This method sets the indexed connection to the specified new connection.
+ * Implementing classes may choose to ignore the given index (such as in the
+ * case of outputs, which only have one connection).
+ *
+ * @param index
+ * @param newConnection
+ */
+ public void setConnection(int index, Connection newConnection);
+
+ /**
+ * This method returns true if and only if:</br>
+ * - the elements being compared are not the same instance;</br>
+ * - the connections of the compared elements are not the same instance;</br>
+ * - the elements have the same function (in the case of Node);</br>
+ * - the grid position of the elements themselves are the same;</br>
+ * - the grid position of all equivalent connections are the same;</br></br>
+ *
+ * The relationship computed by this method is:</br>
+ * - symmetric: a.copyOf(b) == b.copyOf(a);</br>
+ * - not reflexive: a.copyOf(a) returns false;</br>
+ * - not transitive: if a.copyOf(b) is true and b.copyOf(c) is true, a.copyOf(c) is
+ * not necessarily true since it is possible that a == c.</br>
+ *
+ * @param m
+ * @return
+ */
+ boolean copyOf(MutableElement m);
+
+}