home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- class FastStringBuffer {
- String string;
- char[] buffer;
- int length;
- boolean doublesCapacity;
-
- public FastStringBuffer() {
- this("");
- }
-
- public FastStringBuffer(String var1) {
- if (var1 != null && !var1.equals("")) {
- this.buffer = new char[var1.length() + 1];
- this.setStringValue(var1);
- } else {
- this.buffer = new char[8];
- }
-
- this.doublesCapacity = false;
- }
-
- public FastStringBuffer(String var1, int var2, int var3) {
- this.buffer = new char[var3 - var2];
- this.length = var3 - var2;
- this.string = null;
- this.doublesCapacity = false;
- var1.getChars(var2, var3, this.buffer, 0);
- }
-
- public FastStringBuffer(char var1) {
- this.buffer = new char[8];
- this.buffer[0] = var1;
- this.length = 1;
- this.doublesCapacity = false;
- }
-
- void _increaseCapacityTo(int var1) {
- if (this.buffer.length <= var1) {
- char[] var2 = this.buffer;
- if (this.doublesCapacity) {
- this.buffer = new char[var1 * 2];
- } else {
- this.buffer = new char[var1 + 20];
- }
-
- System.arraycopy(var2, 0, this.buffer, 0, var2.length);
- }
-
- }
-
- public void setDoublesCapacityWhenGrowing(boolean var1) {
- this.doublesCapacity = var1;
- }
-
- public boolean doublesCapacityWhenGrowing() {
- return this.doublesCapacity;
- }
-
- public void setStringValue(String var1) {
- if (var1 != null && !var1.equals("")) {
- this.length = var1.length();
- this._increaseCapacityTo(this.length);
- var1.getChars(0, this.length, this.buffer, 0);
- } else {
- this.length = 0;
- }
-
- this.string = var1;
- }
-
- public String toString() {
- if (this.string == null) {
- this.string = new String(this.buffer, 0, this.length);
- }
-
- return this.string;
- }
-
- public char charAt(int var1) {
- if (var1 >= 0 && var1 < this.length) {
- return this.buffer[var1];
- } else {
- throw new StringIndexOutOfBoundsException(var1);
- }
- }
-
- public int indexOf(char var1, int var2) {
- if (var2 >= 0 && var2 < this.length) {
- for(int var3 = var2; var3 < this.length; ++var3) {
- if (this.buffer[var3] == var1) {
- return var3;
- }
- }
-
- return -1;
- } else {
- throw new StringIndexOutOfBoundsException(var2);
- }
- }
-
- public int indexOf(char var1) {
- return this.indexOf(var1, 0);
- }
-
- public boolean tabOrSpaceAt(int var1) {
- if (var1 >= 0 && var1 < this.length) {
- return this.buffer[var1] == ' ' || this.buffer[var1] == '\t';
- } else {
- throw new StringIndexOutOfBoundsException(var1);
- }
- }
-
- public void append(char var1) {
- this._increaseCapacityTo(this.length + 1);
- this.buffer[this.length++] = var1;
- this.string = null;
- }
-
- public void append(String var1) {
- if (var1 != null && !var1.equals("")) {
- this._increaseCapacityTo(this.length + var1.length());
- var1.getChars(0, var1.length(), this.buffer, this.length);
- this.length += var1.length();
- this.string = null;
- }
- }
-
- public void insert(char var1, int var2) {
- if (var2 < 0) {
- throw new StringIndexOutOfBoundsException(var2);
- } else if (var2 >= this.length) {
- this.append(var1);
- } else if (this.length < this.buffer.length) {
- if (var2 != this.length) {
- System.arraycopy(this.buffer, var2, this.buffer, var2 + 1, this.length - var2);
- }
-
- this.buffer[var2] = var1;
- ++this.length;
- this.string = null;
- } else {
- char[] var3 = this.buffer;
- this.buffer = new char[this.buffer.length + 20];
- if (var2 > 0) {
- System.arraycopy(var3, 0, this.buffer, 0, var2);
- }
-
- if (var2 != this.length) {
- System.arraycopy(var3, var2, this.buffer, var2 + 1, this.length - var2);
- }
-
- this.buffer[var2] = var1;
- ++this.length;
- this.string = null;
- }
- }
-
- public void insert(String var1, int var2) {
- if (var2 < 0) {
- throw new StringIndexOutOfBoundsException(var2);
- } else if (var2 > this.length) {
- this.append(var1);
- } else if (var1 != null && !var1.equals("")) {
- int var4 = var1.length();
- if (this.length + var4 < this.buffer.length) {
- System.arraycopy(this.buffer, var2, this.buffer, var2 + var4, this.length - var2);
- var1.getChars(0, var4, this.buffer, var2);
- this.length += var4;
- this.string = null;
- } else {
- char[] var3 = this.buffer;
- this.buffer = new char[this.length + var4 + 20];
- if (var2 > 0) {
- System.arraycopy(var3, 0, this.buffer, 0, var2);
- }
-
- System.arraycopy(var3, var2, this.buffer, var2 + var4, this.length - var2);
- var1.getChars(0, var4, this.buffer, var2);
- this.length += var4;
- this.string = null;
- }
- }
- }
-
- public void removeCharAt(int var1) {
- if (var1 >= 0 && var1 < this.length) {
- if (var1 + 1 == this.length) {
- --this.length;
- this.string = null;
- } else {
- System.arraycopy(this.buffer, var1 + 1, this.buffer, var1, this.length - (var1 + 1));
- --this.length;
- this.string = null;
- }
- } else {
- throw new StringIndexOutOfBoundsException(var1);
- }
- }
-
- public void truncateToLength(int var1) {
- if (var1 >= 0 && var1 <= this.length) {
- this.length = var1;
- this.string = null;
- }
- }
-
- public int length() {
- return this.length;
- }
-
- public void moveChars(int var1, int var2) {
- if (var1 > var2) {
- if (var1 >= 0 && var1 < this.length) {
- if (var2 >= 0 && var2 < this.length) {
- System.arraycopy(this.buffer, var1, this.buffer, var2, this.length - var1);
- this.length -= var1 - var2;
- this.string = null;
- } else {
- throw new StringIndexOutOfBoundsException(var2);
- }
- } else {
- throw new StringIndexOutOfBoundsException(var1);
- }
- }
- }
-
- public char[] charArray() {
- return this.buffer;
- }
- }
-