package org.jboss.axis.components.encoding;
import java.io.UnsupportedEncodingException;
class EncodedByteArray
{
private byte[] array = null;
private int pointer;
private final double PADDING = 1.5;
public EncodedByteArray(byte[] bytes, int startPos, int length)
{
array = new byte[(int)(bytes.length * PADDING)];
System.arraycopy(bytes, startPos, array, 0, length);
pointer = length;
}
public EncodedByteArray(int size)
{
array = new byte[size];
}
public void append(int aByte)
{
if (pointer + 1 >= array.length)
{
byte[] newArray = new byte[(int)(array.length * PADDING)];
System.arraycopy(array, 0, newArray, 0, pointer);
array = newArray;
}
array[pointer] = (byte)aByte;
pointer++;
}
public void append(byte[] byteArray)
{
if (pointer + byteArray.length >= array.length)
{
byte[] newArray = new byte[((int)(array.length * PADDING)) + byteArray.length];
System.arraycopy(array, 0, newArray, 0, pointer);
array = newArray;
}
System.arraycopy(byteArray, 0, array, pointer, byteArray.length);
pointer += byteArray.length;
}
public void append(byte[] byteArray, int pos, int length)
{
if (pointer + length >= array.length)
{
byte[] newArray = new byte[((int)(array.length * PADDING)) + byteArray.length];
System.arraycopy(array, 0, newArray, 0, pointer);
array = newArray;
}
System.arraycopy(byteArray, pos, array, pointer, length);
pointer += length;
}
public String toString()
{
return new String(array, 0, pointer);
}
public String toString(String charsetName) throws UnsupportedEncodingException
{
return new String(array, 0, pointer, charsetName);
}
}