home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import java.io.Serializable;
-
- public final class BitSet implements Cloneable, Serializable {
- private static final int BITS_PER_UNIT = 6;
- private static final int MASK = 63;
- private long[] bits;
- private static boolean debugging = System.getProperty("debug") != null;
- private static final long serialVersionUID = 7997698588986878753L;
-
- public BitSet() {
- this(64);
- }
-
- public BitSet(int nbits) {
- if (nbits < 0) {
- throw new NegativeArraySizeException(Integer.toString(nbits));
- } else {
- if (nbits + 63 < 0) {
- nbits = 2147483584;
- }
-
- this.bits = new long[subscript(nbits + 63)];
- }
- }
-
- public void and(BitSet set) {
- if (this != set) {
- BitSet first = this;
- BitSet second = set;
- if (System.identityHashCode(this) > System.identityHashCode(set)) {
- first = set;
- second = this;
- }
-
- synchronized(first) {
- synchronized(second){}
-
- try {
- int bitsLength = this.bits.length;
- int setLength = set.bits.length;
- int n = Math.min(bitsLength, setLength);
-
- long[] var14;
- for(int i = n; i-- > 0; var14[i] &= set.bits[i]) {
- var14 = this.bits;
- }
-
- while(n < bitsLength) {
- this.bits[n] = 0L;
- ++n;
- }
- } catch (Throwable var12) {
- throw var12;
- }
- }
-
- }
- }
-
- private static int bitIndex(int subscript) {
- return (subscript << 6) + 63;
- }
-
- public void clear(int bit) {
- if (bit < 0) {
- throw new IndexOutOfBoundsException(Integer.toString(bit));
- } else {
- synchronized(this){}
-
- try {
- this.ensureCapacity(bit);
- long[] var10000 = this.bits;
- int var10001 = subscript(bit);
- var10000[var10001] &= ~(1L << (bit & 63));
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
- }
-
- public Object clone() {
- BitSet result = null;
- synchronized(this){}
-
- try {
- try {
- result = (BitSet)super.clone();
- } catch (CloneNotSupportedException var5) {
- throw new InternalError();
- }
-
- result.bits = new long[this.bits.length];
- System.arraycopy(this.bits, 0, result.bits, 0, result.bits.length);
- } catch (Throwable var6) {
- throw var6;
- }
-
- return result;
- }
-
- private void ensureCapacity(int nth) {
- int required = subscript(nth) + 1;
- if (required > this.bits.length) {
- int request = Math.max(2 * this.bits.length, required);
- long[] newBits = new long[request];
- System.arraycopy(this.bits, 0, newBits, 0, this.bits.length);
- this.bits = newBits;
- }
-
- }
-
- public boolean equals(Object obj) {
- if (obj != null && obj instanceof BitSet) {
- if (this == obj) {
- return true;
- } else {
- BitSet set = (BitSet)obj;
- BitSet first = this;
- BitSet second = set;
- if (System.identityHashCode(this) > System.identityHashCode(set)) {
- first = set;
- second = this;
- }
-
- synchronized(first) {
- synchronized(second) {
- int bitsLength = this.bits.length;
- int setLength = set.bits.length;
- int n = Math.min(bitsLength, setLength);
- int i = n;
-
- while(i-- > 0) {
- if (this.bits[i] != set.bits[i]) {
- return false;
- }
- }
-
- if (bitsLength > n) {
- i = bitsLength;
-
- while(i-- > n) {
- if (this.bits[i] != 0L) {
- return false;
- }
- }
- } else if (setLength > n) {
- i = setLength;
-
- while(i-- > n) {
- if (set.bits[i] != 0L) {
- return false;
- }
- }
- }
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public boolean get(int bit) {
- if (bit < 0) {
- throw new IndexOutOfBoundsException(Integer.toString(bit));
- } else {
- boolean result = false;
- synchronized(this){}
-
- try {
- int n = subscript(bit);
- if (n < this.bits.length) {
- result = (this.bits[n] & 1L << (bit & 63)) != 0L;
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- return result;
- }
- }
-
- public int hashCode() {
- long h = 1234L;
- synchronized(this){}
-
- try {
- int i = this.bits.length;
-
- while(true) {
- --i;
- if (i < 0) {
- return (int)(h >> 32 ^ h);
- }
-
- h ^= this.bits[i] * (long)(i + 1);
- }
- } catch (Throwable var6) {
- throw var6;
- }
- }
-
- // $FF: renamed from: or (java.util.BitSet) void
- public void method_0(BitSet set) {
- if (this != set) {
- BitSet first = this;
- BitSet second = set;
- if (System.identityHashCode(this) > System.identityHashCode(set)) {
- first = set;
- second = this;
- }
-
- synchronized(first) {
- synchronized(second){}
-
- try {
- int setLength = set.bits.length;
- if (setLength > 0) {
- this.ensureCapacity(bitIndex(setLength - 1));
- }
-
- long[] var12;
- for(int i = setLength; i-- > 0; var12[i] |= set.bits[i]) {
- var12 = this.bits;
- }
- } catch (Throwable var10) {
- throw var10;
- }
- }
-
- }
- }
-
- public void set(int bit) {
- if (bit < 0) {
- throw new IndexOutOfBoundsException(Integer.toString(bit));
- } else {
- synchronized(this){}
-
- try {
- this.ensureCapacity(bit);
- long[] var10000 = this.bits;
- int var10001 = subscript(bit);
- var10000[var10001] |= 1L << (bit & 63);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
- }
-
- public int size() {
- return this.bits.length << 6;
- }
-
- private static int subscript(int bitIndex) {
- return bitIndex >> 6;
- }
-
- public String toString() {
- StringBuffer buffer = new StringBuffer();
- boolean needSeparator = false;
- buffer.append('{');
- synchronized(this){}
-
- try {
- int limit = this.size();
-
- for(int i = 0; i < limit; ++i) {
- if (this.get(i)) {
- if (needSeparator) {
- buffer.append(", ");
- } else {
- needSeparator = true;
- }
-
- buffer.append(i);
- }
- }
- } catch (Throwable var7) {
- throw var7;
- }
-
- buffer.append('}');
- return buffer.toString();
- }
-
- public void xor(BitSet set) {
- BitSet first = this;
- BitSet second = set;
- if (System.identityHashCode(this) > System.identityHashCode(set)) {
- first = set;
- second = this;
- }
-
- synchronized(first) {
- synchronized(second){}
-
- try {
- int setLength = set.bits.length;
- if (setLength > 0) {
- this.ensureCapacity(bitIndex(setLength - 1));
- }
-
- long[] var12;
- for(int i = setLength; i-- > 0; var12[i] ^= set.bits[i]) {
- var12 = this.bits;
- }
- } catch (Throwable var10) {
- throw var10;
- }
- }
-
- }
- }
-