]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/VariableNode.java
Merge commit 'ad8333027322fda6b9a8a524c7a7e15a54c52f38'
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / variable / VariableNode.java
1 package org.simantics.db.layer0.variable;\r
2 \r
3 public class VariableNode<Node> {\r
4     public final NodeSupport<Node> support;\r
5     public final Object node;\r
6     private int hash;\r
7     public VariableNode(NodeSupport<Node> support, Object node) {\r
8         assert(support != null);\r
9         this.support = support;\r
10         this.node = node;\r
11     }\r
12     \r
13     private int computeHash() {\r
14         return 31*support.hashCode() + 41*node.hashCode();\r
15     }\r
16 \r
17     @Override\r
18     public int hashCode() {\r
19         if (hash == 0)\r
20             hash = computeHash();\r
21         return hash;\r
22     }\r
23     \r
24     @Override\r
25     public boolean equals(Object object) {\r
26         if (this == object)\r
27             return true;\r
28         else if (object == null)\r
29             return false;\r
30         else if (!(object instanceof VariableNode))\r
31             return false;\r
32         VariableNode<?> r = (VariableNode<?>)object;\r
33         if (r.hashCode() != hashCode())\r
34             return false;\r
35         return r.support.equals(support) && r.node.equals(node);\r
36     }\r
37     \r
38 }\r