]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.graph/src/org/simantics/graph/matching/Stat.java b/bundles/org.simantics.graph/src/org/simantics/graph/matching/Stat.java
new file mode 100644 (file)
index 0000000..03068c1
--- /dev/null
@@ -0,0 +1,70 @@
+package org.simantics.graph.matching;\r
+\r
+import java.util.Comparator;\r
+\r
+class Stat {\r
+       public int p, o;\r
+\r
+       public Stat(int p, int o) {\r
+               this.p = p;\r
+               this.o = o;\r
+       }\r
+       \r
+       public Stat(Stat stat) {\r
+               this.p = stat.p;\r
+               this.o = stat.o;\r
+       }\r
+       \r
+       public void map(int[] map) {\r
+               if(p >= 0)\r
+                       p = map[p];\r
+               if(o >= 0)\r
+                       o = map[o];\r
+       }\r
+       \r
+       @Override\r
+       public String toString() {\r
+               return p + " " + o;\r
+       }\r
+       \r
+       public String toString(String[] names) {\r
+               return (p >= 0 ? names[p] : "?") + " " + (o >= 0 ? names[o] : "?");\r
+       }\r
+       \r
+       @Override\r
+       public int hashCode() {\r
+               return 31*p + o;\r
+       }\r
+\r
+       @Override\r
+       public boolean equals(Object obj) {\r
+               if (this == obj)\r
+                       return true;\r
+               if (obj == null)\r
+                       return false;\r
+               if (getClass() != obj.getClass())\r
+                       return false;\r
+               Stat other = (Stat) obj;\r
+               return p==other.p && o==other.o;\r
+       }\r
+\r
+\r
+\r
+       static final Stat[] NO_STATS = new Stat[0];\r
+       \r
+       static final Comparator<Stat> STAT_COMPARATOR = new Comparator<Stat>() {\r
+               @Override\r
+               public int compare(Stat o1, Stat o2) {\r
+                       if(o1.p < o2.p)\r
+                               return -1;\r
+                       else if(o1.p > o2.p)\r
+                               return 1;\r
+                       else if(o1.o < o2.o)\r
+                               return -1;\r
+                       else if(o1.o > o2.o)\r
+                               return 1;\r
+                       else\r
+                               return 0;\r
+               }\r
+       };\r
+}
\ No newline at end of file