package net.sourceforge.pain.db;
/**
* User: fmike Date: 12.08.2003 Time: 17:33:57
*/
final class DbObjBuffer {
Object[] data;
private int size;
DbObjBuffer() {
data = new Object[4];
}
public DbObjBuffer(final Object[] data) {
this.data = data;
}
public DbObjBuffer(final int capacity) {
data = new Object[capacity];
}
final void ensureCapacity(final int capacity) {
if (capacity > data.length) {
final int twiceCapacity = data.length << 1;
final int newLen = capacity > twiceCapacity ? capacity : twiceCapacity;
final Object[] newArr = new Object[newLen];
System.arraycopy(data, 0, newArr, 0, this.size);
data = newArr;
}
}
final Object[] toArray() {
final Object[] result = new Object[size];
System.arraycopy(data, 0, result, 0, size);
return result;
}
public void add(final Object[] addData) {
ensureCapacity(size + addData.length);
System.arraycopy(addData, 0, data, size, addData.length);
size += addData.length;
}
public void add(final Object[] addData, final int from, final int length) {
ensureCapacity(size + length);
System.arraycopy(addData, from, data, size, length);
size += length;
}
public void addFromTo(final Object[] addData, final int from, final int to) {
ensureCapacity(size + (to - from));
System.arraycopy(addData, from, data, size, to - from);
size += to - from;
}
public void add(final Object v) {
ensureCapacity(size + 1);
data[size] = v;
size++;
}
public int getSize() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public Object removeLast() {
return data[--size];
}
public void clear() {
size = 0;
}
public int capacity() {
return data.length;
}
}