You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
82 lines
2.1 KiB
package com.fr.third.antlr; |
|
|
|
/* ANTLR Translator Generator |
|
* Project led by Terence Parr at http://www.cs.usfca.edu |
|
* Software rights: http://www.antlr.org/license.html |
|
* |
|
* $Id: //depot/code/org.antlr/release/antlr-2.7.7/antlr/ANTLRStringBuffer.java#2 $ |
|
*/ |
|
|
|
// 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 = null; |
|
protected int length = 0; // length and also where to store next char |
|
|
|
|
|
public ANTLRStringBuffer() { |
|
buffer = new char[50]; |
|
} |
|
|
|
public ANTLRStringBuffer(int n) { |
|
buffer = new char[n]; |
|
} |
|
|
|
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]; |
|
for (int i = 0; i < length; i++) { |
|
newBuffer[i] = buffer[i]; |
|
} |
|
buffer = newBuffer; |
|
} |
|
buffer[length] = c; |
|
length++; |
|
} |
|
|
|
public final void append(String s) { |
|
for (int i = 0; i < s.length(); 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); |
|
} |
|
}
|
|
|