|
|
|
|
|
|
|
*/ |
|
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
* contributor license agreements. See the NOTICE file distributed with |
|
* this work for additional information regarding copyright ownership. |
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
|
* (the "License"); you may not use this file except in compliance with |
|
* the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
package com.sun.org.apache.xerces.internal.util; |
|
|
|
import com.sun.org.apache.xerces.internal.xni.XMLString; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public class XMLStringBuffer |
|
extends XMLString { |
|
|
|
// |
|
// Constants |
|
// |
|
|
|
|
|
|
|
public static final int DEFAULT_SIZE = 32; |
|
|
|
// |
|
// Data |
|
// |
|
|
|
// |
|
// Constructors |
|
// |
|
|
|
|
|
|
|
*/ |
|
public XMLStringBuffer() { |
|
this(DEFAULT_SIZE); |
|
} // <init>() |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public XMLStringBuffer(int size) { |
|
ch = new char[size]; |
|
} // <init>(int) |
|
|
|
|
|
public XMLStringBuffer(char c) { |
|
this(1); |
|
append(c); |
|
} // <init>(char) |
|
|
|
|
|
public XMLStringBuffer(String s) { |
|
this(s.length()); |
|
append(s); |
|
} // <init>(String) |
|
|
|
|
|
public XMLStringBuffer(char[] ch, int offset, int length) { |
|
this(length); |
|
append(ch, offset, length); |
|
} // <init>(char[],int,int) |
|
|
|
|
|
public XMLStringBuffer(XMLString s) { |
|
this(s.length); |
|
append(s); |
|
} // <init>(XMLString) |
|
|
|
// |
|
// Public methods |
|
// |
|
|
|
|
|
public void clear() { |
|
offset = 0; |
|
length = 0; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public void append(char c) { |
|
if(this.length + 1 > this.ch.length){ |
|
int newLength = this.ch.length * 2 ; |
|
if(newLength < this.ch.length + DEFAULT_SIZE){ |
|
newLength = this.ch.length + DEFAULT_SIZE; |
|
} |
|
char [] tmp = new char[newLength]; |
|
System.arraycopy(this.ch, 0, tmp, 0, this.length); |
|
this.ch = tmp; |
|
} |
|
this.ch[this.length] = c ; |
|
this.length++; |
|
} // append(char) |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public void append(String s) { |
|
int length = s.length(); |
|
if (this.length + length > this.ch.length) { |
|
int newLength = this.ch.length * 2 ; |
|
if(newLength < this.ch.length + length + DEFAULT_SIZE){ |
|
newLength = this.ch.length + length+ DEFAULT_SIZE; |
|
} |
|
|
|
char[] newch = new char[newLength]; |
|
System.arraycopy(this.ch, 0, newch, 0, this.length); |
|
this.ch = newch; |
|
} |
|
s.getChars(0, length, this.ch, this.length); |
|
this.length += length; |
|
} // append(String) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public void append(char[] ch, int offset, int length) { |
|
if (this.length + length > this.ch.length) { |
|
int newLength = this.ch.length * 2 ; |
|
if(newLength < this.ch.length + length + DEFAULT_SIZE){ |
|
newLength = this.ch.length + length + DEFAULT_SIZE; |
|
} |
|
char[] newch = new char[newLength]; |
|
System.arraycopy(this.ch, 0, newch, 0, this.length); |
|
this.ch = newch; |
|
} |
|
//making the code more robust as it would handle null or 0 length data, |
|
|
|
if(ch != null && length > 0){ |
|
System.arraycopy(ch, offset, this.ch, this.length, length); |
|
this.length += length; |
|
} |
|
} // append(char[],int,int) |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public void append(XMLString s) { |
|
append(s.ch, s.offset, s.length); |
|
} // append(XMLString) |
|
|
|
|
|
} // class XMLStringBuffer |