home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 January / PCO0198.ISO / 1&1 / java.z / java_301 / java / util / BitSet.class (.txt) next >
Encoding:
Java Class File  |  1996-10-20  |  3.2 KB  |  164 lines

  1. package java.util;
  2.  
  3. public final class BitSet implements Cloneable {
  4.    static final int BITS = 6;
  5.    static final int MASK = 63;
  6.    long[] bits;
  7.  
  8.    public BitSet() {
  9.       this(64);
  10.    }
  11.  
  12.    public BitSet(int nbits) {
  13.       this.bits = new long[nbits + 63 >> 6];
  14.    }
  15.  
  16.    private void grow(int nbits) {
  17.       long[] newbits = new long[Math.max(this.bits.length << 1, nbits + 63 >> 6)];
  18.       System.arraycopy(this.bits, 0, newbits, 0, this.bits.length);
  19.       this.bits = newbits;
  20.    }
  21.  
  22.    public void set(int bit) {
  23.       int n = bit >> 6;
  24.       if (n >= this.bits.length) {
  25.          this.grow(bit);
  26.       }
  27.  
  28.       long[] var10000 = this.bits;
  29.       var10000[n] |= 1L << (bit & 63);
  30.    }
  31.  
  32.    public void clear(int bit) {
  33.       int n = bit >> 6;
  34.       if (n >= this.bits.length) {
  35.          this.grow(bit);
  36.       }
  37.  
  38.       long[] var10000 = this.bits;
  39.       var10000[n] &= ~(1L << (bit & 63));
  40.    }
  41.  
  42.    public boolean get(int bit) {
  43.       int n = bit >> 6;
  44.       if (n < this.bits.length) {
  45.          return (this.bits[n] & 1L << (bit & 63)) != 0L;
  46.       } else {
  47.          return false;
  48.       }
  49.    }
  50.  
  51.    public void and(BitSet set) {
  52.       int n = Math.min(this.bits.length, set.bits.length);
  53.  
  54.       long[] var4;
  55.       for(int i = n; i-- > 0; var4[i] &= set.bits[i]) {
  56.          var4 = this.bits;
  57.       }
  58.  
  59.       while(n < this.bits.length) {
  60.          this.bits[n] = 0L;
  61.          ++n;
  62.       }
  63.  
  64.    }
  65.  
  66.    // $FF: renamed from: or (java.util.BitSet) void
  67.    public void method_0(BitSet set) {
  68.       long[] var3;
  69.       for(int i = Math.min(this.bits.length, set.bits.length); i-- > 0; var3[i] |= set.bits[i]) {
  70.          var3 = this.bits;
  71.       }
  72.  
  73.    }
  74.  
  75.    public void xor(BitSet set) {
  76.       long[] var3;
  77.       for(int i = Math.min(this.bits.length, set.bits.length); i-- > 0; var3[i] ^= set.bits[i]) {
  78.          var3 = this.bits;
  79.       }
  80.  
  81.    }
  82.  
  83.    public int hashCode() {
  84.       long h = 1234L;
  85.       int i = this.bits.length;
  86.  
  87.       while(true) {
  88.          --i;
  89.          if (i < 0) {
  90.             return (int)(h >> 32 ^ h);
  91.          }
  92.  
  93.          h ^= this.bits[i] * (long)i;
  94.       }
  95.    }
  96.  
  97.    public int size() {
  98.       return this.bits.length << 6;
  99.    }
  100.  
  101.    public boolean equals(Object obj) {
  102.       if (obj != null && obj instanceof BitSet) {
  103.          BitSet set = (BitSet)obj;
  104.          int n = Math.min(this.bits.length, set.bits.length);
  105.          int i = n;
  106.  
  107.          while(i-- > 0) {
  108.             if (this.bits[i] != set.bits[i]) {
  109.                return false;
  110.             }
  111.          }
  112.  
  113.          if (this.bits.length > n) {
  114.             int i = this.bits.length;
  115.  
  116.             while(i-- > n) {
  117.                if (this.bits[i] != 0L) {
  118.                   return false;
  119.                }
  120.             }
  121.          } else if (set.bits.length > n) {
  122.             int i = set.bits.length;
  123.  
  124.             while(i-- > n) {
  125.                if (set.bits[i] != 0L) {
  126.                   return false;
  127.                }
  128.             }
  129.          }
  130.  
  131.          return true;
  132.       } else {
  133.          return false;
  134.       }
  135.    }
  136.  
  137.    public Object clone() {
  138.       try {
  139.          BitSet set = (BitSet)super.clone();
  140.          set.bits = new long[this.bits.length];
  141.          System.arraycopy(this.bits, 0, set.bits, 0, this.bits.length);
  142.          return set;
  143.       } catch (CloneNotSupportedException var2) {
  144.          throw new InternalError();
  145.       }
  146.    }
  147.  
  148.    public String toString() {
  149.       String str = "";
  150.  
  151.       for(int i = 0; i < this.bits.length << 6; ++i) {
  152.          if (this.get(i)) {
  153.             if (str.length() > 0) {
  154.                str = str + ", ";
  155.             }
  156.  
  157.             str = str + i;
  158.          }
  159.       }
  160.  
  161.       return "{" + str + "}";
  162.    }
  163. }
  164.