JAL-1807 update
[jalviewjs.git] / site / j2s / java / util / BitSet.js
1 \feffClazz.load (null, "java.util.BitSet", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "$.StringBuffer", "java.util.Arrays"], function () {
2 c$ = Clazz.decorateAsClass (function () {
3 this.bits = null;
4 Clazz.instantialize (this, arguments);
5 }, java.util, "BitSet", null, [Cloneable, java.io.Serializable]);
6 Clazz.makeConstructor (c$, 
7 function () {
8 this.construct (32);
9 });
10 Clazz.makeConstructor (c$, 
11 function (nbits) {
12 if (nbits < 0) throw  new NegativeArraySizeException ();
13 var length = nbits >>> 5;
14 if ((nbits & 4) != 0) ++length;
15 this.bits =  Clazz.newArray (length, 0);
16 }, "~N");
17 Clazz.defineMethod (c$, "and", 
18 function (bs) {
19 var max = Math.min (this.bits.length, bs.bits.length);
20 var i;
21 for (i = 0; i < max; ++i) this.bits[i] &= bs.bits[i];
22
23 while (i < this.bits.length) this.bits[i++] = 0;
24
25 }, "java.util.BitSet");
26 Clazz.defineMethod (c$, "andNot", 
27 function (bs) {
28 var i = Math.min (this.bits.length, bs.bits.length);
29 while (--i >= 0) {
30 this.bits[i] &= ~bs.bits[i];
31 }
32 }, "java.util.BitSet");
33 Clazz.defineMethod (c$, "cardinality", 
34 function () {
35 var card = 0;
36 for (var i = this.bits.length - 1; i >= 0; i--) {
37 var a = this.bits[i];
38 if (a == 0) continue ;if (a == -1) {
39 card += 32;
40 continue ;}a = ((a >> 1) & 0x55555555) + (a & 0x55555555);
41 a = ((a >> 2) & 0x33333333) + (a & 0x33333333);
42 a = ((a >> 4) & 0x0f0f0f0f) + (a & 0x0f0f0f0f);
43 a = ((a >> 8) & 0x00ff00ff) + (a & 0x00ff00ff);
44 card += ((a >> 16) & 0x0000ffff) + (a & 0x0000ffff);
45 }
46 return card;
47 });
48 Clazz.defineMethod (c$, "clear", 
49 function () {
50 java.util.Arrays.fill (this.bits, 0);
51 });
52 Clazz.defineMethod (c$, "clear", 
53 function (pos) {
54 var offset = pos >> 5;
55 this.ensure (offset);
56 this.bits[offset] &= ~(1 << pos);
57 }, "~N");
58 Clazz.defineMethod (c$, "clear", 
59 function (from, to) {
60 if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
61 if (from == to) return ;
62 var lo_offset = from >>> 5;
63 var hi_offset = to >>> 5;
64 this.ensure (hi_offset);
65 if (lo_offset == hi_offset) {
66 this.bits[hi_offset] &= ((1 << from) - 1) | (-1 << to);
67 return ;
68 }this.bits[lo_offset] &= (1 << from) - 1;
69 this.bits[hi_offset] &= -1 << to;
70 for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = 0;
71
72 }, "~N,~N");
73 Clazz.defineMethod (c$, "clone", 
74 function () {
75 try {
76 var bs = Clazz.superCall (this, java.util.BitSet, "clone", []);
77 bs.bits = this.bits.clone ();
78 return bs;
79 } catch (e) {
80 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {
81 return null;
82 } else {
83 throw e;
84 }
85 }
86 });
87 Clazz.overrideMethod(c$, "equals", 
88 function (obj) {
89 if (!(Clazz.instanceOf (obj, java.util.BitSet))) return false;
90 var bs = obj;
91 var max = Math.min (this.bits.length, bs.bits.length);
92 var i;
93 for (i = 0; i < max; ++i) if (this.bits[i] != bs.bits[i]) return false;
94
95 for (var j = i; j < this.bits.length; ++j) if (this.bits[j] != 0) return false;
96
97 for (var j = i; j < bs.bits.length; ++j) if (bs.bits[j] != 0) return false;
98
99 return true;
100 }, "~O");
101 Clazz.defineMethod (c$, "flip", 
102 function (index) {
103 var offset = index >> 5;
104 this.ensure (offset);
105 this.bits[offset] ^= 1 << index;
106 }, "~N");
107 Clazz.defineMethod (c$, "flip", 
108 function (from, to) {
109 if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
110 if (from == to) return ;
111 var lo_offset = from >>> 5;
112 var hi_offset = to >>> 5;
113 this.ensure (hi_offset);
114 if (lo_offset == hi_offset) {
115 this.bits[hi_offset] ^= (-1 << from) & ((1 << to) - 1);
116 return ;
117 }this.bits[lo_offset] ^= -1 << from;
118 this.bits[hi_offset] ^= (1 << to) - 1;
119 for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] ^= -1;
120
121 }, "~N,~N");
122 Clazz.defineMethod (c$, "get", 
123 function (pos) {
124 var offset = pos >> 5;
125 if (offset >= this.bits.length) return false;
126 return (this.bits[offset] & (1 << pos)) != 0;
127 }, "~N");
128 Clazz.defineMethod (c$, "get", 
129 function (from, to) {
130 if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
131 var bs =  new java.util.BitSet (to - from);
132 var lo_offset = from >>> 5;
133 if (lo_offset >= this.bits.length) return bs;
134 var lo_bit = from & 4;
135 var hi_offset = to >>> 5;
136 if (lo_bit == 0) {
137 var len = Math.min (hi_offset - lo_offset + 1, this.bits.length - lo_offset);
138 System.arraycopy (this.bits, lo_offset, bs.bits, 0, len);
139 if (hi_offset < this.bits.length) bs.bits[hi_offset - lo_offset] &= (1 << to) - 1;
140 return bs;
141 }var len = Math.min (hi_offset, this.bits.length - 1);
142 var reverse = ~lo_bit;
143 var i;
144 for (i = 0; lo_offset < len; lo_offset++, i++) bs.bits[i] = ((this.bits[lo_offset] >>> lo_bit) | (this.bits[lo_offset + 1] << reverse));
145
146 if ((to & 4) > lo_bit) bs.bits[i++] = this.bits[lo_offset] >>> lo_bit;
147 if (hi_offset < this.bits.length) bs.bits[i - 1] &= (1 << (to - from)) - 1;
148 return bs;
149 }, "~N,~N");
150 Clazz.overrideMethod(c$, "hashCode", 
151 function () {
152 var h = 1234;
153 for (var i = this.bits.length; i > 0; ) h ^= i * this.bits[--i];
154
155 return h;
156 });
157 Clazz.defineMethod (c$, "intersects", 
158 function (set) {
159 var i = Math.min (this.bits.length, set.bits.length);
160 while (--i >= 0) if ((this.bits[i] & set.bits[i]) != 0) return true;
161
162 return false;
163 }, "java.util.BitSet");
164 Clazz.defineMethod (c$, "isEmpty", 
165 function () {
166 for (var i = this.bits.length - 1; i >= 0; i--) if (this.bits[i] != 0) return false;
167
168 return true;
169 });
170 Clazz.defineMethod (c$, "length", 
171 function () {
172 var i;
173 for (i = this.bits.length - 1; i >= 0 && this.bits[i] == 0; --i) ;
174 if (i < 0) return 0;
175 var b = this.bits[i];
176 var len = (i + 1) * 32;
177 while ((b & 0x80000000) == 0) {
178 --len;
179 b <<= 1;
180 }
181 return len;
182 });
183 Clazz.defineMethod (c$, "nextClearBit", 
184 function (from) {
185 var offset = from >> 5;
186 var mask = 1 << from;
187 while (offset < this.bits.length) {
188 var h = this.bits[offset];
189 do {
190 if ((h & mask) == 0) return from;
191 mask <<= 1;
192 from++;
193 } while (mask != 0);
194 mask = 1;
195 offset++;
196 }
197 return from;
198 }, "~N");
199 Clazz.defineMethod (c$, "nextSetBit", 
200 function (from) {
201 var offset = from >> 5;
202 var mask = 1 << from;
203 while (offset < this.bits.length) {
204 var h = this.bits[offset];
205 do {
206 if ((h & mask) != 0) return from;
207 mask <<= 1;
208 from++;
209 } while (mask != 0);
210 mask = 1;
211 offset++;
212 }
213 return -1;
214 }, "~N");
215 Clazz.defineMethod (c$, "or", 
216 function (bs) {
217 this.ensure (bs.bits.length - 1);
218 for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] |= bs.bits[i];
219
220 }, "java.util.BitSet");
221 Clazz.defineMethod (c$, "set", 
222 function (pos) {
223 var offset = pos >> 5;
224 this.ensure (offset);
225 this.bits[offset] |= 1 << pos;
226 }, "~N");
227 Clazz.defineMethod (c$, "set", 
228 function (index, value) {
229 if (value) this.set (index);
230  else this.clear (index);
231 }, "~N,~B");
232 Clazz.defineMethod (c$, "set", 
233 function (from, to) {
234 if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
235 if (from == to) return ;
236 var lo_offset = from >>> 5;
237 var hi_offset = to >>> 5;
238 this.ensure (hi_offset);
239 if (lo_offset == hi_offset) {
240 this.bits[hi_offset] |= (-1 << from) & ((1 << to) - 1);
241 return ;
242 }this.bits[lo_offset] |= -1 << from;
243 this.bits[hi_offset] |= (1 << to) - 1;
244 for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = -1;
245
246 }, "~N,~N");
247 Clazz.defineMethod (c$, "set", 
248 function (from, to, value) {
249 if (value) this.set (from, to);
250  else this.clear (from, to);
251 }, "~N,~N,~B");
252 Clazz.defineMethod (c$, "size", 
253 function () {
254 return this.bits.length * 32;
255 });
256 Clazz.overrideMethod(c$, "toString", 
257 function () {
258 var r =  new StringBuffer ("{");
259 var first = true;
260 for (var i = 0; i < this.bits.length; ++i) {
261 var bit = 1;
262 var word = this.bits[i];
263 if (word == 0) continue ;for (var j = 0; j < 32; ++j) {
264 if ((word & bit) != 0) {
265 if (!first) r.append (", ");
266 r.append (32 * i + j);
267 first = false;
268 }bit <<= 1;
269 }
270 }
271 return r.append ("}").toString ();
272 });
273 Clazz.defineMethod (c$, "xor", 
274 function (bs) {
275 this.ensure (bs.bits.length - 1);
276 for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] ^= bs.bits[i];
277
278 }, "java.util.BitSet");
279 Clazz.defineMethod (c$, "ensure", 
280  function (lastElt) {
281 if (lastElt >= this.bits.length) {
282 var nd =  Clazz.newArray (lastElt + 1, 0);
283 System.arraycopy (this.bits, 0, nd, 0, this.bits.length);
284 this.bits = nd;
285 }}, "~N");
286 Clazz.defineStatics (c$,
287 "INT_MASK", 0x4);
288 });