|
|
@@ -1,4 +1,5 @@ |
|
|
|
/* |
|
|
|
* Copyright (C) 2009, Google Inc. |
|
|
|
* Copyright (C) 2009, Jonas Fonseca <fonseca@diku.dk> |
|
|
|
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> |
|
|
|
* and other copyright owners as documented in the project's IP log. |
|
|
@@ -57,12 +58,21 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> { |
|
|
|
|
|
|
|
static final int BLOCK_SIZE = 1 << BLOCK_SHIFT; |
|
|
|
|
|
|
|
/** |
|
|
|
* Items stored in this list. |
|
|
|
* <p> |
|
|
|
* If {@link Block#shift} = 0 this block holds the list elements; otherwise |
|
|
|
* it holds pointers to other {@link Block} instances which use a shift that |
|
|
|
* is {@link #BLOCK_SHIFT} smaller. |
|
|
|
*/ |
|
|
|
protected Block contents = new Block(0); |
|
|
|
|
|
|
|
/** Current number of elements in the list. */ |
|
|
|
protected int size = 0; |
|
|
|
|
|
|
|
/** Create an empty object list. */ |
|
|
|
public RevObjectList() { |
|
|
|
// Initialized above. |
|
|
|
} |
|
|
|
|
|
|
|
public void add(final int index, final E element) { |
|
|
@@ -113,6 +123,7 @@ public class RevObjectList<E extends RevObject> extends AbstractList<E> { |
|
|
|
size = 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** One level of contents, either an intermediate level or a leaf level. */ |
|
|
|
protected static class Block { |
|
|
|
final Object[] contents = new Object[BLOCK_SIZE]; |
|
|
|
|