1 \feffClazz.load (null, "java.util.BitSet", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "$.StringBuffer", "java.util.Arrays"], function () {
2 c$ = Clazz.decorateAsClass (function () {
4 Clazz.instantialize (this, arguments);
5 }, java.util, "BitSet", null, [Cloneable, java.io.Serializable]);
6 Clazz.makeConstructor (c$,
10 Clazz.makeConstructor (c$,
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);
17 Clazz.defineMethod (c$, "and",
19 var max = Math.min (this.bits.length, bs.bits.length);
21 for (i = 0; i < max; ++i) this.bits[i] &= bs.bits[i];
23 while (i < this.bits.length) this.bits[i++] = 0;
25 }, "java.util.BitSet");
26 Clazz.defineMethod (c$, "andNot",
28 var i = Math.min (this.bits.length, bs.bits.length);
30 this.bits[i] &= ~bs.bits[i];
32 }, "java.util.BitSet");
33 Clazz.defineMethod (c$, "cardinality",
36 for (var i = this.bits.length - 1; i >= 0; i--) {
38 if (a == 0) continue ;if (a == -1) {
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);
48 Clazz.defineMethod (c$, "clear",
50 java.util.Arrays.fill (this.bits, 0);
52 Clazz.defineMethod (c$, "clear",
54 var offset = pos >> 5;
56 this.bits[offset] &= ~(1 << pos);
58 Clazz.defineMethod (c$, "clear",
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);
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;
73 Clazz.defineMethod (c$, "clone",
76 var bs = Clazz.superCall (this, java.util.BitSet, "clone", []);
77 bs.bits = this.bits.clone ();
80 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {
87 Clazz.overrideMethod(c$, "equals",
89 if (!(Clazz.instanceOf (obj, java.util.BitSet))) return false;
91 var max = Math.min (this.bits.length, bs.bits.length);
93 for (i = 0; i < max; ++i) if (this.bits[i] != bs.bits[i]) return false;
95 for (var j = i; j < this.bits.length; ++j) if (this.bits[j] != 0) return false;
97 for (var j = i; j < bs.bits.length; ++j) if (bs.bits[j] != 0) return false;
101 Clazz.defineMethod (c$, "flip",
103 var offset = index >> 5;
104 this.ensure (offset);
105 this.bits[offset] ^= 1 << index;
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);
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;
122 Clazz.defineMethod (c$, "get",
124 var offset = pos >> 5;
125 if (offset >= this.bits.length) return false;
126 return (this.bits[offset] & (1 << pos)) != 0;
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;
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;
141 }var len = Math.min (hi_offset, this.bits.length - 1);
142 var reverse = ~lo_bit;
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));
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;
150 Clazz.overrideMethod(c$, "hashCode",
153 for (var i = this.bits.length; i > 0; ) h ^= i * this.bits[--i];
157 Clazz.defineMethod (c$, "intersects",
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;
163 }, "java.util.BitSet");
164 Clazz.defineMethod (c$, "isEmpty",
166 for (var i = this.bits.length - 1; i >= 0; i--) if (this.bits[i] != 0) return false;
170 Clazz.defineMethod (c$, "length",
173 for (i = this.bits.length - 1; i >= 0 && this.bits[i] == 0; --i) ;
175 var b = this.bits[i];
176 var len = (i + 1) * 32;
177 while ((b & 0x80000000) == 0) {
183 Clazz.defineMethod (c$, "nextClearBit",
185 var offset = from >> 5;
186 var mask = 1 << from;
187 while (offset < this.bits.length) {
188 var h = this.bits[offset];
190 if ((h & mask) == 0) return from;
199 Clazz.defineMethod (c$, "nextSetBit",
201 var offset = from >> 5;
202 var mask = 1 << from;
203 while (offset < this.bits.length) {
204 var h = this.bits[offset];
206 if ((h & mask) != 0) return from;
215 Clazz.defineMethod (c$, "or",
217 this.ensure (bs.bits.length - 1);
218 for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] |= bs.bits[i];
220 }, "java.util.BitSet");
221 Clazz.defineMethod (c$, "set",
223 var offset = pos >> 5;
224 this.ensure (offset);
225 this.bits[offset] |= 1 << pos;
227 Clazz.defineMethod (c$, "set",
228 function (index, value) {
229 if (value) this.set (index);
230 else this.clear (index);
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);
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;
247 Clazz.defineMethod (c$, "set",
248 function (from, to, value) {
249 if (value) this.set (from, to);
250 else this.clear (from, to);
252 Clazz.defineMethod (c$, "size",
254 return this.bits.length * 32;
256 Clazz.overrideMethod(c$, "toString",
258 var r = new StringBuffer ("{");
260 for (var i = 0; i < this.bits.length; ++i) {
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);
271 return r.append ("}").toString ();
273 Clazz.defineMethod (c$, "xor",
275 this.ensure (bs.bits.length - 1);
276 for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] ^= bs.bits[i];
278 }, "java.util.BitSet");
279 Clazz.defineMethod (c$, "ensure",
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);
286 Clazz.defineStatics (c$,