]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/VariableNode.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / variable / VariableNode.java
diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/VariableNode.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/VariableNode.java
new file mode 100644 (file)
index 0000000..98f63d3
--- /dev/null
@@ -0,0 +1,38 @@
+package org.simantics.db.layer0.variable;\r
+\r
+public class VariableNode<Node> {\r
+    public final NodeSupport<Node> support;\r
+    public final Object node;\r
+    private int hash;\r
+    public VariableNode(NodeSupport<Node> support, Object node) {\r
+       assert(support != null);\r
+        this.support = support;\r
+        this.node = node;\r
+    }\r
+    \r
+    private int computeHash() {\r
+        return 31*support.hashCode() + 41*node.hashCode();\r
+    }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        if (hash == 0)\r
+            hash = computeHash();\r
+        return hash;\r
+    }\r
+    \r
+    @Override\r
+    public boolean equals(Object object) {\r
+        if (this == object)\r
+            return true;\r
+        else if (object == null)\r
+            return false;\r
+        else if (!(object instanceof VariableNode))\r
+            return false;\r
+        VariableNode<?> r = (VariableNode<?>)object;\r
+        if (r.hashCode() != hashCode())\r
+            return false;\r
+        return r.support.equals(support) && r.node.equals(node);\r
+    }\r
+    \r
+}\r