com.firefly.utils.lang.Utf8StringBuffer Maven / Gradle / Ivy
package com.firefly.utils.lang;
/**
* UTF-8 StringBuffer.
*
* This class wraps a standard {@link java.lang.StringBuffer} and provides
* methods to append UTF-8 encoded bytes, that are converted into characters.
*
* This class is stateful and up to 4 calls to {@link #append(byte)} may be
* needed before state a character is appended to the string buffer.
*
* The UTF-8 decoding is done by this class and no additional buffers or Readers
* are used. The UTF-8 code was inspired by
* http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
*/
public class Utf8StringBuffer extends Utf8Appendable {
final StringBuffer buffer;
public Utf8StringBuffer() {
super(new StringBuffer());
buffer = (StringBuffer) appendable;
}
public Utf8StringBuffer(int capacity) {
super(new StringBuffer(capacity));
buffer = (StringBuffer) appendable;
}
@Override
public int length() {
return buffer.length();
}
@Override
public void reset() {
super.reset();
buffer.setLength(0);
}
public StringBuffer getStringBuffer() {
checkState();
return buffer;
}
@Override
public String toString() {
checkState();
return buffer.toString();
}
}