--- /dev/null
+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