start of new file
[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 }