From 9c056fcace49f4c111cad8a49399a113fb083f30 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 3 Sep 2009 12:46:31 +0200 Subject: [PATCH] Add set to IntList Some applications may wish to modify an int list. Bug: 291083 Eclipse-CQ: 3559 Change-Id: Iea871443ec661230aec92397229f1eda6c74216f Signed-off-by: Johannes Schindelin Signed-off-by: Shawn O. Pearce --- .../org/eclipse/jgit/util/IntListTest.java | 21 +++++++++++++++++++ .../src/org/eclipse/jgit/util/IntList.java | 18 ++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IntListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IntListTest.java index ecabeeea5..b8d5bd102 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IntListTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IntListTest.java @@ -150,6 +150,27 @@ public void testClear() { } } + public void testSet() { + final IntList i = new IntList(); + i.add(1); + assertEquals(1, i.size()); + assertEquals(1, i.get(0)); + + i.set(0, 5); + assertEquals(5, i.get(0)); + + try { + i.set(5, 5); + fail("accepted set of 5 beyond end of list"); + } catch (ArrayIndexOutOfBoundsException e){ + assertTrue(true); + } + + i.set(1, 2); + assertEquals(2, i.size()); + assertEquals(2, i.get(1)); + } + public void testToString() { final IntList i = new IntList(); i.add(1); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java index 510f2a4db..510032eeb 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/IntList.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2008, Google Inc. + * Copyright (C) 2009, Johannes Schindelin * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -99,6 +100,23 @@ public void add(final int n) { entries[count++] = n; } + /** + * Assign an entry in the list. + * + * @param index + * index to set, must be in the range [0, {@link #size()}). + * @param n + * value to store at the position. + */ + public void set(final int index, final int n) { + if (count < index) + throw new ArrayIndexOutOfBoundsException(index); + else if (count == index) + add(n); + else + entries[index] = n; + } + /** * Pad the list with entries. *