summaryrefslogtreecommitdiffstats
path: root/core/java/com
diff options
context:
space:
mode:
authordcashman <dcashman@google.com>2014-05-30 09:34:04 -0700
committerdcashman <dcashman@google.com>2014-06-02 10:29:40 -0700
commit874d0d4032dc940327a81359f144d38d3cb580a3 (patch)
treea47894c0f48e52290a1a80ec6dd3dc3a6bbb8a89 /core/java/com
parent8756a9897a9b94c1abaabd69945e5b0a36b7fa86 (diff)
downloadframeworks_base-874d0d4032dc940327a81359f144d38d3cb580a3.zip
frameworks_base-874d0d4032dc940327a81359f144d38d3cb580a3.tar.gz
frameworks_base-874d0d4032dc940327a81359f144d38d3cb580a3.tar.bz2
Add ArrayUtils methods and tests for consumption by KeySet code.
Adds methods for dealing specifically with long data types. Used by PackageKeySetData as part of the KeySet work. Add appropriate test methods to MoreAsserts as well. Bug: 6967056 Change-Id: I1e263301b353e0cd1b45126be6ef5ec310f311a8
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/internal/util/ArrayUtils.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java
index a56fa36..d66ef83 100644
--- a/core/java/com/android/internal/util/ArrayUtils.java
+++ b/core/java/com/android/internal/util/ArrayUtils.java
@@ -169,6 +169,15 @@ public class ArrayUtils
return false;
}
+ public static boolean contains(long[] array, long value) {
+ for (long element : array) {
+ if (element == value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public static long total(long[] array) {
long total = 0;
for (long value : array) {
@@ -229,6 +238,14 @@ public class ArrayUtils
return array;
}
+ /**
+ * Appends a new value to a copy of the array and returns the copy. If
+ * the value is already present, the original array is returned
+ * @param cur The original array, or null to represent an empty array.
+ * @param val The value to add.
+ * @return A new array that contains all of the values of the original array
+ * with the new value added, or the original array.
+ */
public static int[] appendInt(int[] cur, int val) {
if (cur == null) {
return new int[] { val };
@@ -264,4 +281,48 @@ public class ArrayUtils
}
return cur;
}
+
+ /**
+ * Appends a new value to a copy of the array and returns the copy. If
+ * the value is already present, the original array is returned
+ * @param cur The original array, or null to represent an empty array.
+ * @param val The value to add.
+ * @return A new array that contains all of the values of the original array
+ * with the new value added, or the original array.
+ */
+ public static long[] appendLong(long[] cur, long val) {
+ if (cur == null) {
+ return new long[] { val };
+ }
+ final int N = cur.length;
+ for (int i = 0; i < N; i++) {
+ if (cur[i] == val) {
+ return cur;
+ }
+ }
+ long[] ret = new long[N + 1];
+ System.arraycopy(cur, 0, ret, 0, N);
+ ret[N] = val;
+ return ret;
+ }
+
+ public static long[] removeLong(long[] cur, long val) {
+ if (cur == null) {
+ return null;
+ }
+ final int N = cur.length;
+ for (int i = 0; i < N; i++) {
+ if (cur[i] == val) {
+ long[] ret = new long[N - 1];
+ if (i > 0) {
+ System.arraycopy(cur, 0, ret, 0, i);
+ }
+ if (i < (N - 1)) {
+ System.arraycopy(cur, i + 1, ret, i, N - i - 1);
+ }
+ return ret;
+ }
+ }
+ return cur;
+ }
}