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 + -
显示快捷键?