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