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