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; } }