From 67c42358e2940a166649b95a871ae7e47fb3ef17 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 27 Sep 2013 21:47:01 +0200 Subject: wip --- src/main/java/io/trygvis/btree/HeapPage.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/main/java/io/trygvis/btree/HeapPage.java') diff --git a/src/main/java/io/trygvis/btree/HeapPage.java b/src/main/java/io/trygvis/btree/HeapPage.java index a931260..32ba0ef 100644 --- a/src/main/java/io/trygvis/btree/HeapPage.java +++ b/src/main/java/io/trygvis/btree/HeapPage.java @@ -53,11 +53,27 @@ public class HeapPage { bytes.putInt(FREE_POSITION_INDEX, freePosition); } + public void prepend(byte[] item) { + int bytesFree = bytesFree(); + int bytesRequested = item.length; + + if (bytesRequested > bytesFree) { + throw new PageOverflowException(bytesFree, bytesRequested); + } + + byte[] array = bytes.array(); + int offset = bytes.arrayOffset(); + + System.arraycopy(array, offset, array, offset + bytesRequested, bytesRequested); + + freePosition -= itemSize; + } + public int bytesFree() { return freePosition - headerSize; } - public Iterable bufferIterator() { + public Iterable items() { return new Iterable() { @Override public Iterator iterator() { -- cgit v1.2.3