]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.db.impl.query;\r
2 \r
3 import gnu.trove.procedure.TLongProcedure;\r
4 import gnu.trove.set.hash.TLongHashSet;\r
5 \r
6 final public class ObjectUpdateSet {\r
7 \r
8         private long first = 0;\r
9         public TLongHashSet rest = new TLongHashSet();\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 long getFirst() {\r
17                 return first;\r
18         }\r
19         \r
20         public void add(long 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 TLongHashSet();\r
39                         //System.err.println("new rest!");\r
40                 }\r
41                 //rest.clear();\r
42         }\r
43         \r
44         public void forEach(TLongProcedure proc) {\r
45                 if(first != 0) {\r
46                         proc.execute(first);\r
47                 } else {\r
48                         rest.forEach(proc);\r
49                 }\r
50         }\r
51         \r
52 }\r