| Clazz.load (null, "java.util.BitSet", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "$.StringBuffer", "java.util.Arrays"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.bits = null; | |
| Clazz.instantialize (this, arguments); | |
| }, java.util, "BitSet", null, [Cloneable, java.io.Serializable]); | |
| Clazz.makeConstructor (c$, | |
| function () { | |
| this.construct (32); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (nbits) { | |
| if (nbits < 0) throw new NegativeArraySizeException (); | |
| var length = nbits >>> 5; | |
| if ((nbits & 4) != 0) ++length; | |
| this.bits = Clazz.newArray (length, 0); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "and", | |
| function (bs) { | |
| var max = Math.min (this.bits.length, bs.bits.length); | |
| var i; | |
| for (i = 0; i < max; ++i) this.bits[i] &= bs.bits[i]; | |
| while (i < this.bits.length) this.bits[i++] = 0; | |
| }, "java.util.BitSet"); | |
| Clazz.defineMethod (c$, "andNot", | |
| function (bs) { | |
| var i = Math.min (this.bits.length, bs.bits.length); | |
| while (--i >= 0) { | |
| this.bits[i] &= ~bs.bits[i]; | |
| } | |
| }, "java.util.BitSet"); | |
| Clazz.defineMethod (c$, "cardinality", | |
| function () { | |
| var card = 0; | |
| for (var i = this.bits.length - 1; i >= 0; i--) { | |
| var a = this.bits[i]; | |
| if (a == 0) continue ;if (a == -1) { | |
| card += 32; | |
| continue ;}a = ((a >> 1) & 0x55555555) + (a & 0x55555555); | |
| a = ((a >> 2) & 0x33333333) + (a & 0x33333333); | |
| a = ((a >> 4) & 0x0f0f0f0f) + (a & 0x0f0f0f0f); | |
| a = ((a >> 8) & 0x00ff00ff) + (a & 0x00ff00ff); | |
| card += ((a >> 16) & 0x0000ffff) + (a & 0x0000ffff); | |
| } | |
| return card; | |
| }); | |
| Clazz.defineMethod (c$, "clear", | |
| function () { | |
| java.util.Arrays.fill (this.bits, 0); | |
| }); | |
| Clazz.defineMethod (c$, "clear", | |
| function (pos) { | |
| var offset = pos >> 5; | |
| this.ensure (offset); | |
| this.bits[offset] &= ~(1 << pos); | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "clear", | |
| function (from, to) { | |
| if (from < 0 || from > to) throw new IndexOutOfBoundsException (); | |
| if (from == to) return ; | |
| var lo_offset = from >>> 5; | |
| var hi_offset = to >>> 5; | |
| this.ensure (hi_offset); | |
| if (lo_offset == hi_offset) { | |
| this.bits[hi_offset] &= ((1 << from) - 1) | (-1 << to); | |
| return ; | |
| }this.bits[lo_offset] &= (1 << from) - 1; | |
| this.bits[hi_offset] &= -1 << to; | |
| for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = 0; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "clone", | |
| function () { | |
| try { | |
| var bs = Clazz.superCall (this, java.util.BitSet, "clone", []); | |
| bs.bits = this.bits.clone (); | |
| return bs; | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, CloneNotSupportedException)) { | |
| return null; | |
| } else { | |
| throw e; | |
| } | |
| } | |
| }); | |
| Clazz.overrideMethod(c$, "equals", | |
| function (obj) { | |
| if (!(Clazz.instanceOf (obj, java.util.BitSet))) return false; | |
| var bs = obj; | |
| var max = Math.min (this.bits.length, bs.bits.length); | |
| var i; | |
| for (i = 0; i < max; ++i) if (this.bits[i] != bs.bits[i]) return false; | |
| for (var j = i; j < this.bits.length; ++j) if (this.bits[j] != 0) return false; | |
| for (var j = i; j < bs.bits.length; ++j) if (bs.bits[j] != 0) return false; | |
| return true; | |
| }, "~O"); | |
| Clazz.defineMethod (c$, "flip", | |
| function (index) { | |
| var offset = index >> 5; | |
| this.ensure (offset); | |
| this.bits[offset] ^= 1 << index; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "flip", | |
| function (from, to) { | |
| if (from < 0 || from > to) throw new IndexOutOfBoundsException (); | |
| if (from == to) return ; | |
| var lo_offset = from >>> 5; | |
| var hi_offset = to >>> 5; | |
| this.ensure (hi_offset); | |
| if (lo_offset == hi_offset) { | |
| this.bits[hi_offset] ^= (-1 << from) & ((1 << to) - 1); | |
| return ; | |
| }this.bits[lo_offset] ^= -1 << from; | |
| this.bits[hi_offset] ^= (1 << to) - 1; | |
| for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] ^= -1; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "get", | |
| function (pos) { | |
| var offset = pos >> 5; | |
| if (offset >= this.bits.length) return false; | |
| return (this.bits[offset] & (1 << pos)) != 0; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "get", | |
| function (from, to) { | |
| if (from < 0 || from > to) throw new IndexOutOfBoundsException (); | |
| var bs = new java.util.BitSet (to - from); | |
| var lo_offset = from >>> 5; | |
| if (lo_offset >= this.bits.length) return bs; | |
| var lo_bit = from & 4; | |
| var hi_offset = to >>> 5; | |
| if (lo_bit == 0) { | |
| var len = Math.min (hi_offset - lo_offset + 1, this.bits.length - lo_offset); | |
| System.arraycopy (this.bits, lo_offset, bs.bits, 0, len); | |
| if (hi_offset < this.bits.length) bs.bits[hi_offset - lo_offset] &= (1 << to) - 1; | |
| return bs; | |
| }var len = Math.min (hi_offset, this.bits.length - 1); | |
| var reverse = ~lo_bit; | |
| var i; | |
| for (i = 0; lo_offset < len; lo_offset++, i++) bs.bits[i] = ((this.bits[lo_offset] >>> lo_bit) | (this.bits[lo_offset + 1] << reverse)); | |
| if ((to & 4) > lo_bit) bs.bits[i++] = this.bits[lo_offset] >>> lo_bit; | |
| if (hi_offset < this.bits.length) bs.bits[i - 1] &= (1 << (to - from)) - 1; | |
| return bs; | |
| }, "~N,~N"); | |
| Clazz.overrideMethod(c$, "hashCode", | |
| function () { | |
| var h = 1234; | |
| for (var i = this.bits.length; i > 0; ) h ^= i * this.bits[--i]; | |
| return h; | |
| }); | |
| Clazz.defineMethod (c$, "intersects", | |
| function (set) { | |
| var i = Math.min (this.bits.length, set.bits.length); | |
| while (--i >= 0) if ((this.bits[i] & set.bits[i]) != 0) return true; | |
| return false; | |
| }, "java.util.BitSet"); | |
| Clazz.defineMethod (c$, "isEmpty", | |
| function () { | |
| for (var i = this.bits.length - 1; i >= 0; i--) if (this.bits[i] != 0) return false; | |
| return true; | |
| }); | |
| Clazz.defineMethod (c$, "length", | |
| function () { | |
| var i; | |
| for (i = this.bits.length - 1; i >= 0 && this.bits[i] == 0; --i) ; | |
| if (i < 0) return 0; | |
| var b = this.bits[i]; | |
| var len = (i + 1) * 32; | |
| while ((b & 0x80000000) == 0) { | |
| --len; | |
| b <<= 1; | |
| } | |
| return len; | |
| }); | |
| Clazz.defineMethod (c$, "nextClearBit", | |
| function (from) { | |
| var offset = from >> 5; | |
| var mask = 1 << from; | |
| while (offset < this.bits.length) { | |
| var h = this.bits[offset]; | |
| do { | |
| if ((h & mask) == 0) return from; | |
| mask <<= 1; | |
| from++; | |
| } while (mask != 0); | |
| mask = 1; | |
| offset++; | |
| } | |
| return from; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "nextSetBit", | |
| function (from) { | |
| var offset = from >> 5; | |
| var mask = 1 << from; | |
| while (offset < this.bits.length) { | |
| var h = this.bits[offset]; | |
| do { | |
| if ((h & mask) != 0) return from; | |
| mask <<= 1; | |
| from++; | |
| } while (mask != 0); | |
| mask = 1; | |
| offset++; | |
| } | |
| return -1; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "or", | |
| function (bs) { | |
| this.ensure (bs.bits.length - 1); | |
| for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] |= bs.bits[i]; | |
| }, "java.util.BitSet"); | |
| Clazz.defineMethod (c$, "set", | |
| function (pos) { | |
| var offset = pos >> 5; | |
| this.ensure (offset); | |
| this.bits[offset] |= 1 << pos; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "set", | |
| function (index, value) { | |
| if (value) this.set (index); | |
| else this.clear (index); | |
| }, "~N,~B"); | |
| Clazz.defineMethod (c$, "set", | |
| function (from, to) { | |
| if (from < 0 || from > to) throw new IndexOutOfBoundsException (); | |
| if (from == to) return ; | |
| var lo_offset = from >>> 5; | |
| var hi_offset = to >>> 5; | |
| this.ensure (hi_offset); | |
| if (lo_offset == hi_offset) { | |
| this.bits[hi_offset] |= (-1 << from) & ((1 << to) - 1); | |
| return ; | |
| }this.bits[lo_offset] |= -1 << from; | |
| this.bits[hi_offset] |= (1 << to) - 1; | |
| for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = -1; | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "set", | |
| function (from, to, value) { | |
| if (value) this.set (from, to); | |
| else this.clear (from, to); | |
| }, "~N,~N,~B"); | |
| Clazz.defineMethod (c$, "size", | |
| function () { | |
| return this.bits.length * 32; | |
| }); | |
| Clazz.overrideMethod(c$, "toString", | |
| function () { | |
| var r = new StringBuffer ("{"); | |
| var first = true; | |
| for (var i = 0; i < this.bits.length; ++i) { | |
| var bit = 1; | |
| var word = this.bits[i]; | |
| if (word == 0) continue ;for (var j = 0; j < 32; ++j) { | |
| if ((word & bit) != 0) { | |
| if (!first) r.append (", "); | |
| r.append (32 * i + j); | |
| first = false; | |
| }bit <<= 1; | |
| } | |
| } | |
| return r.append ("}").toString (); | |
| }); | |
| Clazz.defineMethod (c$, "xor", | |
| function (bs) { | |
| this.ensure (bs.bits.length - 1); | |
| for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] ^= bs.bits[i]; | |
| }, "java.util.BitSet"); | |
| Clazz.defineMethod (c$, "ensure", | |
| function (lastElt) { | |
| if (lastElt >= this.bits.length) { | |
| var nd = Clazz.newArray (lastElt + 1, 0); | |
| System.arraycopy (this.bits, 0, nd, 0, this.bits.length); | |
| this.bits = nd; | |
| }}, "~N"); | |
| Clazz.defineStatics (c$, | |
| "INT_MASK", 0x4); | |
| }); | |