]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.graph/src/org/simantics/graph/matching/Stat.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graph / src / org / simantics / graph / matching / Stat.java
1 package org.simantics.graph.matching;\r
2 \r
3 import java.util.Comparator;\r
4 \r
5 class Stat {\r
6         public int p, o;\r
7 \r
8         public Stat(int p, int o) {\r
9                 this.p = p;\r
10                 this.o = o;\r
11         }\r
12         \r
13         public Stat(Stat stat) {\r
14                 this.p = stat.p;\r
15                 this.o = stat.o;\r
16         }\r
17         \r
18         public void map(int[] map) {\r
19                 if(p >= 0)\r
20                         p = map[p];\r
21                 if(o >= 0)\r
22                         o = map[o];\r
23         }\r
24         \r
25         @Override\r
26         public String toString() {\r
27                 return p + " " + o;\r
28         }\r
29         \r
30         public String toString(String[] names) {\r
31                 return (p >= 0 ? names[p] : "?") + " " + (o >= 0 ? names[o] : "?");\r
32         }\r
33         \r
34         @Override\r
35         public int hashCode() {\r
36                 return 31*p + o;\r
37         }\r
38 \r
39         @Override\r
40         public boolean equals(Object obj) {\r
41                 if (this == obj)\r
42                         return true;\r
43                 if (obj == null)\r
44                         return false;\r
45                 if (getClass() != obj.getClass())\r
46                         return false;\r
47                 Stat other = (Stat) obj;\r
48                 return p==other.p && o==other.o;\r
49         }\r
50 \r
51 \r
52 \r
53         static final Stat[] NO_STATS = new Stat[0];\r
54         \r
55         static final Comparator<Stat> STAT_COMPARATOR = new Comparator<Stat>() {\r
56                 @Override\r
57                 public int compare(Stat o1, Stat o2) {\r
58                         if(o1.p < o2.p)\r
59                                 return -1;\r
60                         else if(o1.p > o2.p)\r
61                                 return 1;\r
62                         else if(o1.o < o2.o)\r
63                                 return -1;\r
64                         else if(o1.o > o2.o)\r
65                                 return 1;\r
66                         else\r
67                                 return 0;\r
68                 }\r
69         };\r
70 }