]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ValueUpdateSet.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / ValueUpdateSet.java
diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ValueUpdateSet.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ValueUpdateSet.java
new file mode 100644 (file)
index 0000000..8e7144f
--- /dev/null
@@ -0,0 +1,51 @@
+package org.simantics.db.impl.query;\r
+\r
+import gnu.trove.procedure.TIntProcedure;\r
+import gnu.trove.set.hash.TIntHashSet;\r
+\r
+final public class ValueUpdateSet {\r
+\r
+       private int first = 0;\r
+       public TIntHashSet rest = new TIntHashSet();\r
+       \r
+       public int size() {\r
+               if(first != 0) return 1;\r
+               else return rest.size();\r
+       }\r
+       \r
+       public int getFirst() {\r
+               return first;\r
+       }\r
+       \r
+       public void add(int l) {\r
+               if(first == 0) {\r
+                       if(rest.isEmpty()) {\r
+                               first = l;\r
+                       } else {\r
+                               rest.add(l);\r
+                       }\r
+               } else {\r
+                       if(l == first) return;\r
+                       rest.add(first);\r
+                       rest.add(l);\r
+                       first = 0;\r
+               }\r
+       }\r
+       \r
+       public void clear() {\r
+               first = 0;\r
+               if(!rest.isEmpty()) {\r
+                       rest = new TIntHashSet();\r
+                       //System.err.println("new rest!");\r
+               }\r
+       }\r
+       \r
+       public void forEach(TIntProcedure proc) {\r
+               if(first != 0) {\r
+                       proc.execute(first);\r
+               } else {\r
+                       rest.forEach(proc);\r
+               }\r
+       }\r
+       \r
+}\r