home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / ObjectInputStream$HandleTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.2 KB  |  133 lines

  1. package java.io;
  2.  
  3. import java.util.Arrays;
  4.  
  5. class ObjectInputStream$HandleTable {
  6.    private static final byte STATUS_OK = 1;
  7.    private static final byte STATUS_UNKNOWN = 2;
  8.    private static final byte STATUS_EXCEPTION = 3;
  9.    byte[] status;
  10.    Object[] entries;
  11.    ObjectInputStream.HandleTable.HandleList[] deps;
  12.    int lowDep = -1;
  13.    int size = 0;
  14.  
  15.    ObjectInputStream$HandleTable(int var1) {
  16.       this.status = new byte[var1];
  17.       this.entries = new Object[var1];
  18.       this.deps = new ObjectInputStream.HandleTable.HandleList[var1];
  19.    }
  20.  
  21.    int assign(Object var1) {
  22.       if (this.size >= this.entries.length) {
  23.          this.grow();
  24.       }
  25.  
  26.       this.status[this.size] = 2;
  27.       this.entries[this.size] = var1;
  28.       return this.size++;
  29.    }
  30.  
  31.    void markDependency(int var1, int var2) {
  32.       if (var1 != -1 && var2 != -1) {
  33.          switch (this.status[var1]) {
  34.             case 2:
  35.                switch (this.status[var2]) {
  36.                   case 1:
  37.                      break;
  38.                   case 2:
  39.                      if (this.deps[var2] == null) {
  40.                         this.deps[var2] = new ObjectInputStream.HandleTable.HandleList();
  41.                      }
  42.  
  43.                      this.deps[var2].add(var1);
  44.                      if (this.lowDep < 0 || this.lowDep > var2) {
  45.                         this.lowDep = var2;
  46.                      }
  47.                      break;
  48.                   case 3:
  49.                      this.markException(var1, (ClassNotFoundException)this.entries[var2]);
  50.                      break;
  51.                   default:
  52.                      throw new InternalError();
  53.                }
  54.             case 3:
  55.                return;
  56.             default:
  57.                throw new InternalError();
  58.          }
  59.       }
  60.    }
  61.  
  62.    void markException(int var1, ClassNotFoundException var2) {
  63.       switch (this.status[var1]) {
  64.          case 2:
  65.             this.status[var1] = 3;
  66.             this.entries[var1] = var2;
  67.             ObjectInputStream.HandleTable.HandleList var3 = this.deps[var1];
  68.             if (var3 != null) {
  69.                int var4 = var3.size();
  70.  
  71.                for(int var5 = 0; var5 < var4; ++var5) {
  72.                   this.markException(var3.get(var5), var2);
  73.                }
  74.  
  75.                this.deps[var1] = null;
  76.             }
  77.          case 3:
  78.             return;
  79.          default:
  80.             throw new InternalError();
  81.       }
  82.    }
  83.  
  84.    void finish(int param1) {
  85.       // $FF: Couldn't be decompiled
  86.    }
  87.  
  88.    void setObject(int var1, Object var2) {
  89.       switch (this.status[var1]) {
  90.          case 1:
  91.          case 2:
  92.             this.entries[var1] = var2;
  93.          case 3:
  94.             return;
  95.          default:
  96.             throw new InternalError();
  97.       }
  98.    }
  99.  
  100.    Object lookupObject(int var1) {
  101.       return var1 != -1 && this.status[var1] != 3 ? this.entries[var1] : null;
  102.    }
  103.  
  104.    ClassNotFoundException lookupException(int var1) {
  105.       return var1 != -1 && this.status[var1] == 3 ? (ClassNotFoundException)this.entries[var1] : null;
  106.    }
  107.  
  108.    void clear() {
  109.       Arrays.fill(this.status, 0, this.size, (byte)0);
  110.       Arrays.fill(this.entries, 0, this.size, (Object)null);
  111.       Arrays.fill(this.deps, 0, this.size, (Object)null);
  112.       this.lowDep = -1;
  113.       this.size = 0;
  114.    }
  115.  
  116.    int size() {
  117.       return this.size;
  118.    }
  119.  
  120.    private void grow() {
  121.       int var1 = (this.entries.length << 1) + 1;
  122.       byte[] var2 = new byte[var1];
  123.       Object[] var3 = new Object[var1];
  124.       ObjectInputStream.HandleTable.HandleList[] var4 = new ObjectInputStream.HandleTable.HandleList[var1];
  125.       System.arraycopy(this.status, 0, var2, 0, this.size);
  126.       System.arraycopy(this.entries, 0, var3, 0, this.size);
  127.       System.arraycopy(this.deps, 0, var4, 0, this.size);
  128.       this.status = var2;
  129.       this.entries = var3;
  130.       this.deps = var4;
  131.    }
  132. }
  133.