/*
* Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.java.lang;
/**
* A java.lang.String implementation.
*/
public class StringBuilder {
private int length;
private char[] buffer;
public StringBuilder(String s) {
char[] chars = s.chars;
int len = chars.length;
buffer = new char[len];
System.arraycopy(chars, 0, buffer, 0, len);
this.length = len;
}
public StringBuilder() {
buffer = new char[10];
}
/**
* Append the given value.
*
* @param x the value
* @return this
*/
public StringBuilder append(String x) {
int l = x.length();
ensureCapacity(l);
System.arraycopy(x.chars, 0, buffer, length, l);
length += l;
return this;
}
/**
* Append the given value.
*
* @param x the value
* @return this
*/
public StringBuilder append(int x) {
append(Integer.toString(x));
return this;
}
public java.lang.String toString() {
return new java.lang.String(buffer, 0, length);
}
private void ensureCapacity(int plus) {
if (buffer.length < length + plus) {
char[] b = new char[Math.max(length + plus, buffer.length * 2)];
System.arraycopy(buffer, 0, b, 0, length);
buffer = b;
}
}
}