home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / java / lang / StringBuffer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  4.6 KB  |  264 lines

  1. package java.lang;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.Serializable;
  6.  
  7. public final class StringBuffer implements Serializable {
  8.    private char[] value;
  9.    private int count;
  10.    private boolean shared;
  11.    static final long serialVersionUID = 3388685877147921107L;
  12.  
  13.    public StringBuffer() {
  14.       this(16);
  15.    }
  16.  
  17.    public StringBuffer(int var1) {
  18.       this.value = new char[var1];
  19.       this.shared = false;
  20.    }
  21.  
  22.    public StringBuffer(String var1) {
  23.       this(var1.length() + 16);
  24.       this.append(var1);
  25.    }
  26.  
  27.    public int length() {
  28.       return this.count;
  29.    }
  30.  
  31.    public int capacity() {
  32.       return this.value.length;
  33.    }
  34.  
  35.    private final void copyWhenShared() {
  36.       if (this.shared) {
  37.          char[] var1 = new char[this.value.length];
  38.          System.arraycopy(this.value, 0, var1, 0, this.count);
  39.          this.value = var1;
  40.          this.shared = false;
  41.       }
  42.  
  43.    }
  44.  
  45.    public synchronized void ensureCapacity(int var1) {
  46.       int var2 = this.value.length;
  47.       if (var1 > var2) {
  48.          int var3 = (var2 + 1) * 2;
  49.          if (var1 > var3) {
  50.             var3 = var1;
  51.          }
  52.  
  53.          char[] var4 = new char[var3];
  54.          System.arraycopy(this.value, 0, var4, 0, this.count);
  55.          this.value = var4;
  56.          this.shared = false;
  57.       }
  58.  
  59.    }
  60.  
  61.    public synchronized void setLength(int var1) {
  62.       if (var1 < 0) {
  63.          throw new StringIndexOutOfBoundsException(var1);
  64.       } else {
  65.          this.ensureCapacity(var1);
  66.          if (this.count < var1) {
  67.             this.copyWhenShared();
  68.  
  69.             while(this.count < var1) {
  70.                this.value[this.count] = 0;
  71.                ++this.count;
  72.             }
  73.          }
  74.  
  75.          this.count = var1;
  76.       }
  77.    }
  78.  
  79.    public synchronized char charAt(int var1) {
  80.       if (var1 >= 0 && var1 < this.count) {
  81.          return this.value[var1];
  82.       } else {
  83.          throw new StringIndexOutOfBoundsException(var1);
  84.       }
  85.    }
  86.  
  87.    public synchronized void getChars(int var1, int var2, char[] var3, int var4) {
  88.       if (var1 >= 0 && var1 < this.count) {
  89.          if (var2 >= 0 && var2 <= this.count) {
  90.             if (var1 < var2) {
  91.                System.arraycopy(this.value, var1, var3, var4, var2 - var1);
  92.             }
  93.  
  94.          } else {
  95.             throw new StringIndexOutOfBoundsException(var2);
  96.          }
  97.       } else {
  98.          throw new StringIndexOutOfBoundsException(var1);
  99.       }
  100.    }
  101.  
  102.    public synchronized void setCharAt(int var1, char var2) {
  103.       if (var1 >= 0 && var1 < this.count) {
  104.          this.copyWhenShared();
  105.          this.value[var1] = var2;
  106.       } else {
  107.          throw new StringIndexOutOfBoundsException(var1);
  108.       }
  109.    }
  110.  
  111.    public synchronized StringBuffer append(Object var1) {
  112.       return this.append(String.valueOf(var1));
  113.    }
  114.  
  115.    public synchronized StringBuffer append(String var1) {
  116.       if (var1 == null) {
  117.          var1 = String.valueOf(var1);
  118.       }
  119.  
  120.       int var2 = var1.length();
  121.       this.ensureCapacity(this.count + var2);
  122.       this.copyWhenShared();
  123.       var1.getChars(0, var2, this.value, this.count);
  124.       this.count += var2;
  125.       return this;
  126.    }
  127.  
  128.    public synchronized StringBuffer append(char[] var1) {
  129.       int var2 = var1.length;
  130.       this.ensureCapacity(this.count + var2);
  131.       this.copyWhenShared();
  132.       System.arraycopy(var1, 0, this.value, this.count, var2);
  133.       this.count += var2;
  134.       return this;
  135.    }
  136.  
  137.    public synchronized StringBuffer append(char[] var1, int var2, int var3) {
  138.       this.ensureCapacity(this.count + var3);
  139.       this.copyWhenShared();
  140.       System.arraycopy(var1, var2, this.value, this.count, var3);
  141.       this.count += var3;
  142.       return this;
  143.    }
  144.  
  145.    public StringBuffer append(boolean var1) {
  146.       return this.append(String.valueOf(var1));
  147.    }
  148.  
  149.    public synchronized StringBuffer append(char var1) {
  150.       this.ensureCapacity(this.count + 1);
  151.       this.copyWhenShared();
  152.       this.value[this.count++] = var1;
  153.       return this;
  154.    }
  155.  
  156.    public StringBuffer append(int var1) {
  157.       return this.append(String.valueOf(var1));
  158.    }
  159.  
  160.    public StringBuffer append(long var1) {
  161.       return this.append(String.valueOf(var1));
  162.    }
  163.  
  164.    public StringBuffer append(float var1) {
  165.       return this.append(String.valueOf(var1));
  166.    }
  167.  
  168.    public StringBuffer append(double var1) {
  169.       return this.append(String.valueOf(var1));
  170.    }
  171.  
  172.    public synchronized StringBuffer insert(int var1, Object var2) {
  173.       return this.insert(var1, String.valueOf(var2));
  174.    }
  175.  
  176.    public synchronized StringBuffer insert(int var1, String var2) {
  177.       if (var1 >= 0 && var1 <= this.count) {
  178.          int var3 = var2.length();
  179.          this.ensureCapacity(this.count + var3);
  180.          this.copyWhenShared();
  181.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  182.          var2.getChars(0, var3, this.value, var1);
  183.          this.count += var3;
  184.          return this;
  185.       } else {
  186.          throw new StringIndexOutOfBoundsException();
  187.       }
  188.    }
  189.  
  190.    public synchronized StringBuffer insert(int var1, char[] var2) {
  191.       if (var1 >= 0 && var1 <= this.count) {
  192.          int var3 = var2.length;
  193.          this.ensureCapacity(this.count + var3);
  194.          this.copyWhenShared();
  195.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  196.          System.arraycopy(var2, 0, this.value, var1, var3);
  197.          this.count += var3;
  198.          return this;
  199.       } else {
  200.          throw new StringIndexOutOfBoundsException();
  201.       }
  202.    }
  203.  
  204.    public StringBuffer insert(int var1, boolean var2) {
  205.       return this.insert(var1, String.valueOf(var2));
  206.    }
  207.  
  208.    public synchronized StringBuffer insert(int var1, char var2) {
  209.       this.ensureCapacity(this.count + 1);
  210.       this.copyWhenShared();
  211.       System.arraycopy(this.value, var1, this.value, var1 + 1, this.count - var1);
  212.       this.value[var1] = var2;
  213.       ++this.count;
  214.       return this;
  215.    }
  216.  
  217.    public StringBuffer insert(int var1, int var2) {
  218.       return this.insert(var1, String.valueOf(var2));
  219.    }
  220.  
  221.    public StringBuffer insert(int var1, long var2) {
  222.       return this.insert(var1, String.valueOf(var2));
  223.    }
  224.  
  225.    public StringBuffer insert(int var1, float var2) {
  226.       return this.insert(var1, String.valueOf(var2));
  227.    }
  228.  
  229.    public StringBuffer insert(int var1, double var2) {
  230.       return this.insert(var1, String.valueOf(var2));
  231.    }
  232.  
  233.    public synchronized StringBuffer reverse() {
  234.       this.copyWhenShared();
  235.       int var1 = this.count - 1;
  236.  
  237.       for(int var2 = var1 - 1 >> 1; var2 >= 0; --var2) {
  238.          char var3 = this.value[var2];
  239.          this.value[var2] = this.value[var1 - var2];
  240.          this.value[var1 - var2] = var3;
  241.       }
  242.  
  243.       return this;
  244.    }
  245.  
  246.    public String toString() {
  247.       return new String(this);
  248.    }
  249.  
  250.    final void setShared() {
  251.       this.shared = true;
  252.    }
  253.  
  254.    final char[] getValue() {
  255.       return this.value;
  256.    }
  257.  
  258.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  259.       var1.defaultReadObject();
  260.       this.value = (char[])this.value.clone();
  261.       this.shared = false;
  262.    }
  263. }
  264.