home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / netscape / application / FastStringBuffer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-12  |  3.5 KB  |  233 lines

  1. package netscape.application;
  2.  
  3. class FastStringBuffer {
  4.    String string;
  5.    char[] buffer;
  6.    int length;
  7.    boolean doublesCapacity;
  8.  
  9.    public FastStringBuffer() {
  10.       this("");
  11.    }
  12.  
  13.    public FastStringBuffer(String var1) {
  14.       if (var1 != null && !var1.equals("")) {
  15.          this.buffer = new char[var1.length() + 1];
  16.          this.setStringValue(var1);
  17.       } else {
  18.          this.buffer = new char[8];
  19.       }
  20.  
  21.       this.doublesCapacity = false;
  22.    }
  23.  
  24.    public FastStringBuffer(String var1, int var2, int var3) {
  25.       this.buffer = new char[var3 - var2];
  26.       this.length = var3 - var2;
  27.       this.string = null;
  28.       this.doublesCapacity = false;
  29.       var1.getChars(var2, var3, this.buffer, 0);
  30.    }
  31.  
  32.    public FastStringBuffer(char var1) {
  33.       this.buffer = new char[8];
  34.       this.buffer[0] = var1;
  35.       this.length = 1;
  36.       this.doublesCapacity = false;
  37.    }
  38.  
  39.    void _increaseCapacityTo(int var1) {
  40.       if (this.buffer.length <= var1) {
  41.          char[] var2 = this.buffer;
  42.          if (this.doublesCapacity) {
  43.             this.buffer = new char[var1 * 2];
  44.          } else {
  45.             this.buffer = new char[var1 + 20];
  46.          }
  47.  
  48.          System.arraycopy(var2, 0, this.buffer, 0, var2.length);
  49.       }
  50.  
  51.    }
  52.  
  53.    public void setDoublesCapacityWhenGrowing(boolean var1) {
  54.       this.doublesCapacity = var1;
  55.    }
  56.  
  57.    public boolean doublesCapacityWhenGrowing() {
  58.       return this.doublesCapacity;
  59.    }
  60.  
  61.    public void setStringValue(String var1) {
  62.       if (var1 != null && !var1.equals("")) {
  63.          this.length = var1.length();
  64.          this._increaseCapacityTo(this.length);
  65.          var1.getChars(0, this.length, this.buffer, 0);
  66.       } else {
  67.          this.length = 0;
  68.       }
  69.  
  70.       this.string = var1;
  71.    }
  72.  
  73.    public String toString() {
  74.       if (this.string == null) {
  75.          this.string = new String(this.buffer, 0, this.length);
  76.       }
  77.  
  78.       return this.string;
  79.    }
  80.  
  81.    public char charAt(int var1) {
  82.       if (var1 >= 0 && var1 < this.length) {
  83.          return this.buffer[var1];
  84.       } else {
  85.          throw new StringIndexOutOfBoundsException(var1);
  86.       }
  87.    }
  88.  
  89.    public int indexOf(char var1, int var2) {
  90.       if (var2 >= 0 && var2 < this.length) {
  91.          for(int var3 = var2; var3 < this.length; ++var3) {
  92.             if (this.buffer[var3] == var1) {
  93.                return var3;
  94.             }
  95.          }
  96.  
  97.          return -1;
  98.       } else {
  99.          throw new StringIndexOutOfBoundsException(var2);
  100.       }
  101.    }
  102.  
  103.    public int indexOf(char var1) {
  104.       return this.indexOf(var1, 0);
  105.    }
  106.  
  107.    public boolean tabOrSpaceAt(int var1) {
  108.       if (var1 >= 0 && var1 < this.length) {
  109.          return this.buffer[var1] == ' ' || this.buffer[var1] == '\t';
  110.       } else {
  111.          throw new StringIndexOutOfBoundsException(var1);
  112.       }
  113.    }
  114.  
  115.    public void append(char var1) {
  116.       this._increaseCapacityTo(this.length + 1);
  117.       this.buffer[this.length++] = var1;
  118.       this.string = null;
  119.    }
  120.  
  121.    public void append(String var1) {
  122.       if (var1 != null && !var1.equals("")) {
  123.          this._increaseCapacityTo(this.length + var1.length());
  124.          var1.getChars(0, var1.length(), this.buffer, this.length);
  125.          this.length += var1.length();
  126.          this.string = null;
  127.       }
  128.    }
  129.  
  130.    public void insert(char var1, int var2) {
  131.       if (var2 < 0) {
  132.          throw new StringIndexOutOfBoundsException(var2);
  133.       } else if (var2 >= this.length) {
  134.          this.append(var1);
  135.       } else if (this.length < this.buffer.length) {
  136.          if (var2 != this.length) {
  137.             System.arraycopy(this.buffer, var2, this.buffer, var2 + 1, this.length - var2);
  138.          }
  139.  
  140.          this.buffer[var2] = var1;
  141.          ++this.length;
  142.          this.string = null;
  143.       } else {
  144.          char[] var3 = this.buffer;
  145.          this.buffer = new char[this.buffer.length + 20];
  146.          if (var2 > 0) {
  147.             System.arraycopy(var3, 0, this.buffer, 0, var2);
  148.          }
  149.  
  150.          if (var2 != this.length) {
  151.             System.arraycopy(var3, var2, this.buffer, var2 + 1, this.length - var2);
  152.          }
  153.  
  154.          this.buffer[var2] = var1;
  155.          ++this.length;
  156.          this.string = null;
  157.       }
  158.    }
  159.  
  160.    public void insert(String var1, int var2) {
  161.       if (var2 < 0) {
  162.          throw new StringIndexOutOfBoundsException(var2);
  163.       } else if (var2 > this.length) {
  164.          this.append(var1);
  165.       } else if (var1 != null && !var1.equals("")) {
  166.          int var4 = var1.length();
  167.          if (this.length + var4 < this.buffer.length) {
  168.             System.arraycopy(this.buffer, var2, this.buffer, var2 + var4, this.length - var2);
  169.             var1.getChars(0, var4, this.buffer, var2);
  170.             this.length += var4;
  171.             this.string = null;
  172.          } else {
  173.             char[] var3 = this.buffer;
  174.             this.buffer = new char[this.length + var4 + 20];
  175.             if (var2 > 0) {
  176.                System.arraycopy(var3, 0, this.buffer, 0, var2);
  177.             }
  178.  
  179.             System.arraycopy(var3, var2, this.buffer, var2 + var4, this.length - var2);
  180.             var1.getChars(0, var4, this.buffer, var2);
  181.             this.length += var4;
  182.             this.string = null;
  183.          }
  184.       }
  185.    }
  186.  
  187.    public void removeCharAt(int var1) {
  188.       if (var1 >= 0 && var1 < this.length) {
  189.          if (var1 + 1 == this.length) {
  190.             --this.length;
  191.             this.string = null;
  192.          } else {
  193.             System.arraycopy(this.buffer, var1 + 1, this.buffer, var1, this.length - (var1 + 1));
  194.             --this.length;
  195.             this.string = null;
  196.          }
  197.       } else {
  198.          throw new StringIndexOutOfBoundsException(var1);
  199.       }
  200.    }
  201.  
  202.    public void truncateToLength(int var1) {
  203.       if (var1 >= 0 && var1 <= this.length) {
  204.          this.length = var1;
  205.          this.string = null;
  206.       }
  207.    }
  208.  
  209.    public int length() {
  210.       return this.length;
  211.    }
  212.  
  213.    public void moveChars(int var1, int var2) {
  214.       if (var1 > var2) {
  215.          if (var1 >= 0 && var1 < this.length) {
  216.             if (var2 >= 0 && var2 < this.length) {
  217.                System.arraycopy(this.buffer, var1, this.buffer, var2, this.length - var1);
  218.                this.length -= var1 - var2;
  219.                this.string = null;
  220.             } else {
  221.                throw new StringIndexOutOfBoundsException(var2);
  222.             }
  223.          } else {
  224.             throw new StringIndexOutOfBoundsException(var1);
  225.          }
  226.       }
  227.    }
  228.  
  229.    public char[] charArray() {
  230.       return this.buffer;
  231.    }
  232. }
  233.