home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 August / PCO0897.ISO / filesbbs / os2 / fp1os2.arj / OS2 / DATA / 49 / C / 0 / F_26836 / JSbxIndexArray.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-05-15  |  2.9 KB  |  166 lines

  1. import java.io.PrintStream;
  2.  
  3. public class JSbxIndexArray extends JSbxBase {
  4.    private static final int MIN_SIZE_STEP = 5;
  5.    private static final int MAX_SIZE_STEP = 10000;
  6.    private static final int DEFAULT_SIZE_STEP = 20;
  7.    protected Object[] aObjects;
  8.    protected int nCapacity;
  9.    protected int nSize;
  10.    protected int nOffset;
  11.    protected int nSizeStep;
  12.  
  13.    public JSbxIndexArray() {
  14.       this.ImpInit(20);
  15.    }
  16.  
  17.    public JSbxIndexArray(int var1) {
  18.       this.ImpInit(var1);
  19.    }
  20.  
  21.    private final void ImpInit(int var1) {
  22.       this.nCapacity = 0;
  23.       this.nSize = 0;
  24.       this.nOffset = 0;
  25.       this.SetSizeStep(var1);
  26.    }
  27.  
  28.    public final void Put(int var1, Object var2) {
  29.       this.ChangeSizeForNewIndex(var1);
  30.       this.aObjects[var1 + this.nOffset] = var2;
  31.       if (this.nSize <= var1) {
  32.          this.nSize = var1 + 1;
  33.       }
  34.  
  35.    }
  36.  
  37.    public final void Add(Object var1) {
  38.       this.Put(this.nSize, var1);
  39.    }
  40.  
  41.    public final Object Get(int var1) {
  42.       return this.nSize > var1 && -this.nOffset <= var1 ? this.aObjects[var1 + this.nOffset] : null;
  43.    }
  44.  
  45.    public final Object GetLast() {
  46.       Object var1 = null;
  47.       if (this.nSize > 0) {
  48.          var1 = this.aObjects[this.nSize - 1 + this.nOffset];
  49.       }
  50.  
  51.       return var1;
  52.    }
  53.  
  54.    public final Object DeleteLast() {
  55.       Object var1 = null;
  56.       if (this.nSize > 0) {
  57.          --this.nSize;
  58.          var1 = this.aObjects[this.nSize + this.nOffset];
  59.          this.aObjects[this.nSize + this.nOffset] = null;
  60.       }
  61.  
  62.       return var1;
  63.    }
  64.  
  65.    public final void Clear() {
  66.       while(this.nSize > 0) {
  67.          --this.nSize;
  68.          this.aObjects[this.nSize + this.nOffset] = null;
  69.       }
  70.  
  71.       while(this.nOffset >= 0) {
  72.          this.aObjects[this.nOffset] = null;
  73.          --this.nOffset;
  74.       }
  75.  
  76.    }
  77.  
  78.    private final void ChangeSizeForNewIndex(int var1) {
  79.       if (var1 + this.nOffset >= this.nCapacity || var1 < this.GetMinIndex()) {
  80.          int var4 = this.nCapacity / this.nSizeStep;
  81.          int var5 = this.GetMinIndex();
  82.          int var3;
  83.          if (var1 < this.GetMinIndex()) {
  84.             var3 = 1 + (var5 - var1) / this.nSizeStep;
  85.             this.nOffset += var3 * this.nSizeStep;
  86.          } else {
  87.             var3 = 1 + (var1 - var5 - this.nCapacity) / this.nSizeStep;
  88.          }
  89.  
  90.          int var2 = this.nSizeStep * (var3 + var4);
  91.          Object[] var6 = new Object[var2];
  92.          if (this.aObjects != null) {
  93.             for(int var7 = 0; var7 < this.nSize - var5; ++var7) {
  94.                var6[var7 + this.nOffset + var5] = this.aObjects[var7];
  95.             }
  96.          }
  97.  
  98.          this.aObjects = var6;
  99.          this.nCapacity = this.aObjects.length;
  100.       }
  101.  
  102.    }
  103.  
  104.    public final int GetTotalSize() {
  105.       return this.nSize + this.nOffset;
  106.    }
  107.  
  108.    public final int GetMinIndex() {
  109.       return -this.nOffset;
  110.    }
  111.  
  112.    public final int GetMaxIndex() {
  113.       return this.nSize - 1;
  114.    }
  115.  
  116.    public final int GetSize() {
  117.       return this.nSize + this.nOffset;
  118.    }
  119.  
  120.    public final int GetPosIndexSize() {
  121.       return this.nSize;
  122.    }
  123.  
  124.    private final void SetSizeStep(int var1) {
  125.       if (var1 < 5) {
  126.          var1 = 5;
  127.       } else if (var1 > 10000) {
  128.          var1 = 10000;
  129.       }
  130.  
  131.       this.nSizeStep = var1;
  132.    }
  133.  
  134.    public final void Reverse() {
  135.       int var2 = this.aObjects.length;
  136.       Object[] var3 = new Object[var2];
  137.  
  138.       for(int var1 = 0; var1 < var2; ++var1) {
  139.          var3[var1] = this.aObjects[var1];
  140.       }
  141.  
  142.       for(int var4 = 0; var4 < this.GetPosIndexSize(); ++var4) {
  143.          var3[this.GetPosIndexSize() - var4 - 1 + this.nOffset] = this.aObjects[var4 + this.nOffset];
  144.       }
  145.  
  146.       this.aObjects = var3;
  147.    }
  148.  
  149.    public void Dump(PrintStream var1, int var2, int var3) throws JSbxException {
  150.       if (this.aObjects != null) {
  151.          String var4 = JSbxBase.GetTabStr(var2);
  152.  
  153.          for(int var5 = 0; var5 < this.nSize + this.nOffset; ++var5) {
  154.             int var6 = var5 - this.nOffset;
  155.             var1.print(var4 + "[" + var6 + "] = ");
  156.             if (this.aObjects[var5] instanceof JSbxBase) {
  157.                ((JSbxBase)this.aObjects[var5 + this.nOffset]).Dump(var1, var2, var3);
  158.             } else {
  159.                var1.println("null");
  160.             }
  161.          }
  162.  
  163.       }
  164.    }
  165. }
  166.