]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.db.impl.query;\r
2 \r
3 import gnu.trove.procedure.TIntProcedure;\r
4 import gnu.trove.set.hash.TIntHashSet;\r
5 \r
6 final public class ValueUpdateSet {\r
7 \r
8         private int first = 0;\r
9         public TIntHashSet rest = new TIntHashSet();\r
10         \r
11         public int size() {\r
12                 if(first != 0) return 1;\r
13                 else return rest.size();\r
14         }\r
15         \r
16         public int getFirst() {\r
17                 return first;\r
18         }\r
19         \r
20         public void add(int l) {\r
21                 if(first == 0) {\r
22                         if(rest.isEmpty()) {\r
23                                 first = l;\r
24                         } else {\r
25                                 rest.add(l);\r
26                         }\r
27                 } else {\r
28                         if(l == first) return;\r
29                         rest.add(first);\r
30                         rest.add(l);\r
31                         first = 0;\r
32                 }\r
33         }\r
34         \r
35         public void clear() {\r
36                 first = 0;\r
37                 if(!rest.isEmpty()) {\r
38                         rest = new TIntHashSet();\r
39                         //System.err.println("new rest!");\r
40                 }\r
41         }\r
42         \r
43         public void forEach(TIntProcedure proc) {\r
44                 if(first != 0) {\r
45                         proc.execute(first);\r
46                 } else {\r
47                         rest.forEach(proc);\r
48                 }\r
49         }\r
50         \r
51 }\r