antlrstringbuffer.java
来自「SRI international 发布的OAA框架软件」· Java 代码 · 共 60 行
JAVA
60 行
package antlr_oaa;
/* ANTLR Translator Generator
* Project led by Terence Parr at http://www.jGuru.com
* Software rights: http://www.antlr.org/RIGHTS.html
*
* $Id: ANTLRStringBuffer.java,v 1.1 2002/11/08 17:38:30 agno Exp $
*/
// Implementation of a StringBuffer-like object that does not have the
// unfortunate side-effect of creating Strings with very large buffers.
public class ANTLRStringBuffer {
protected char[] buffer = new char[8];
protected int length = 0; // length and also where to store next char
public ANTLRStringBuffer() {}
public final void append(char c) {
// This would normally be an "ensureCapacity" method, but inlined
// here for speed.
if (length >= buffer.length) {
// Compute a new length that is at least double old length
int newSize = buffer.length;
while (length >= newSize) {
newSize *= 2;
}
// Allocate new array and copy buffer
char[] newBuffer = new char[newSize];
System.arraycopy(buffer, 0, newBuffer, 0, length);
buffer = newBuffer;
}
buffer[length] = c;
length++;
}
public final void append(String s) {
int len = s.length();
for (int i = 0; i < len; i++) {
append(s.charAt(i));
}
}
public final char charAt(int index) { return buffer[index]; }
final public char[] getBuffer() { return buffer; }
public final int length() { return length; }
public final void setCharAt(int index, char ch) { buffer[index] = ch; }
public final void setLength(int newLength) {
if (newLength < length) {
length = newLength;
} else {
while (newLength > length) {
append('\0');
}
}
}
public final String toString() {
return new String(buffer, 0, length);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?