mirror of
https://github.com/stleary/JSON-java.git
synced 2026-05-18 00:00:50 -04:00
7c7a98da71
resulting in a faster toString generation.
83 lines
1.9 KiB
Java
83 lines
1.9 KiB
Java
package org.json;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Writer;
|
|
|
|
/**
|
|
* Performance optimised alternative for {@link java.io.StringWriter}
|
|
* using internally a {@link StringBuilder} instead of a {@link StringBuffer}.
|
|
*/
|
|
class StringBuilderWriter extends Writer {
|
|
private final StringBuilder builder;
|
|
|
|
StringBuilderWriter() {
|
|
builder = new StringBuilder();
|
|
lock = builder;
|
|
}
|
|
|
|
StringBuilderWriter(int initialSize) {
|
|
if (initialSize < 0) {
|
|
throw new IllegalArgumentException("Negative buffer size");
|
|
}
|
|
builder = new StringBuilder(initialSize);
|
|
lock = builder;
|
|
}
|
|
|
|
@Override
|
|
public void write(int c) {
|
|
builder.append((char) c);
|
|
}
|
|
|
|
@Override
|
|
public void write(char cbuf[], int offset, int length) {
|
|
if ((offset < 0) || (offset > cbuf.length) || (length < 0) ||
|
|
((offset + length) > cbuf.length) || ((offset + length) < 0)) {
|
|
throw new IndexOutOfBoundsException();
|
|
} else if (length == 0) {
|
|
return;
|
|
}
|
|
builder.append(cbuf, offset, length);
|
|
}
|
|
|
|
@Override
|
|
public void write(String str) {
|
|
builder.append(str);
|
|
}
|
|
|
|
@Override
|
|
public void write(String str, int offset, int length) {
|
|
builder.append(str, offset, offset + length);
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(CharSequence csq) {
|
|
write(String.valueOf(csq));
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(CharSequence csq, int start, int end) {
|
|
if (csq == null) csq = "null";
|
|
return append(csq.subSequence(start, end));
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(char c) {
|
|
write(c);
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return builder.toString();
|
|
}
|
|
|
|
@Override
|
|
public void flush() {
|
|
}
|
|
|
|
@Override
|
|
public void close() throws IOException {
|
|
}
|
|
}
|