change
[IRC.git] / Robust / src / ClassLibrary / StringBuffer.java
1 public class StringBuffer {
2   char value[];
3   int count;
4   //    private static final int DEFAULTSIZE=16;
5
6   public StringBuffer(String str) {
7     value=new char[str.count+16];    //16 is DEFAULTSIZE
8     count=str.count;
9     for(int i=0; i<count; i++)
10       value[i]=str.value[i+str.offset];
11   }
12
13   public StringBuffer() {
14     value=new char[16];    //16 is DEFAULTSIZE
15     count=0;
16   }
17
18   public int length() {
19     return count;
20   }
21
22   public int capacity() {
23     return value.length;
24   }
25
26   public char charAt(int x) {
27     return value[x];
28   }
29
30   public StringBuffer append(char c) {
31     return append(String.valueOf(c));
32   }
33
34   public StringBuffer append(String s) {
35     if ((s.count+count)>value.length) {
36       // Need to allocate
37       char newvalue[]=new char[s.count+count+16];       //16 is DEFAULTSIZE
38       for(int i=0; i<count; i++)
39         newvalue[i]=value[i];
40       for(int i=0; i<s.count; i++)
41         newvalue[i+count]=s.value[i+s.offset];
42       value=newvalue;
43       count+=s.count;
44     } else {
45       for(int i=0; i<s.count; i++) {
46         value[i+count]=s.value[i+s.offset];
47       }
48       count+=s.count;
49     }
50     return this;
51   }
52
53   public StringBuffer append(StringBuffer s) {
54     if ((s.count+count)>value.length) {
55       // Need to allocate
56       char newvalue[]=new char[s.count+count+16];       //16 is DEFAULTSIZE
57       for(int i=0; i<count; i++)
58         newvalue[i]=value[i];
59       for(int i=0; i<s.count; i++)
60         newvalue[i+count]=s.value[i];
61       value=newvalue;
62       count+=s.count;
63     } else {
64       for(int i=0; i<s.count; i++) {
65         value[i+count]=s.value[i];
66       }
67       count+=s.count;
68     }
69     return this;
70   }
71
72   public String toString() {
73     return new String(this);
74   }
75 }