Mercurial > hg4j
diff src/org/tmatesoft/hg/internal/IntVector.java @ 551:4ea0351ca878
Better (precise) name for diff facility, tests
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 20 Feb 2013 18:19:52 +0100 |
parents | 83afa680555d |
children | 45751456b471 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/IntVector.java Tue Feb 19 21:35:09 2013 +0100 +++ b/src/org/tmatesoft/hg/internal/IntVector.java Wed Feb 20 18:19:52 2013 +0100 @@ -42,11 +42,20 @@ public void add(int v) { if (count == data.length) { - grow(); + grow(0); } data[count++] = v; } + public void add(int... values) { + if (count + values.length > data.length) { + grow(count + values.length - data.length); + } + for (int v : values) { + data[count++] = v; + } + } + public int get(int i) { if (i < 0 || i >= count) { throw new IndexOutOfBoundsException(String.format("Index: %d, size: %d", i, count)); @@ -95,11 +104,14 @@ return toArray(); } - private void grow() { + private void grow(int newCapacityHint) { if (increment == 0) { throw new UnsupportedOperationException("This vector is not allowed to expand"); } int newCapacity = increment < 0 ? data.length << 1 : data.length + increment; + if (newCapacityHint > 0 && newCapacity < newCapacityHint) { + newCapacity = newCapacityHint; + } assert newCapacity > 0 && newCapacity != data.length : newCapacity; int[] newData = new int[newCapacity]; System.arraycopy(data, 0, newData, 0, count);