Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
peersimgrid release 1.0
[simgrid.git] / contrib / psg / src / example / symphony / Tuple.java
diff --git a/contrib/psg/src/example/symphony/Tuple.java b/contrib/psg/src/example/symphony/Tuple.java
new file mode 100644 (file)
index 0000000..ed82b64
--- /dev/null
@@ -0,0 +1,45 @@
+package example.symphony;\r
+\r
+/**\r
+ *\r
+ * @author Andrea Esposito <and1989@gmail.com>\r
+ */\r
+public class Tuple<X, Y> {\r
+\r
+    public X x;\r
+    public Y y;\r
+\r
+    public Tuple() {\r
+    }\r
+\r
+    public Tuple(X x, Y y) {\r
+        this.x = x;\r
+        this.y = y;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+\r
+        if (obj instanceof Tuple) {\r
+            Tuple tuple = (Tuple) obj;\r
+\r
+            // (x != null && tuple.x != null) ==> (x==tuple.x || x.equals(tuple.x))\r
+            // x == null <==> tuple.x == null\r
+\r
+            boolean equalsX = (x == null && tuple.x == null) || ((x != null && tuple.x != null) && (x == tuple.x || x.equals(tuple.x)));\r
+            boolean equalsY = (y == null && tuple.y == null) || ((y != null && tuple.y != null) && (y == tuple.y || y.equals(tuple.y)));\r
+\r
+            return equalsX && equalsY;\r
+        }\r
+\r
+        return false;\r
+    }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        int hash = 5;\r
+        hash = 89 * hash + (this.x != null ? this.x.hashCode() : 0);\r
+        hash = 89 * hash + (this.y != null ? this.y.hashCode() : 0);\r
+        return hash;\r
+    }\r
+}\r