summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IndexedList.kt26
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt26
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt35
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt26
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IntMap.kt30
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/IntSet.kt26
-rw-r--r--services/permission/java/com/android/server/permission/access/collection/List.kt26
7 files changed, 123 insertions, 72 deletions
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt
index 9cb2e8660e78..c4d07fe28c94 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IndexedList.kt
@@ -19,8 +19,8 @@ package com.android.server.permission.access.collection
typealias IndexedList<T> = ArrayList<T>
inline fun <T> IndexedList<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (!predicate(index, element)) {
return false
}
}
@@ -28,8 +28,8 @@ inline fun <T> IndexedList<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolea
}
inline fun <T> IndexedList<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return true
}
}
@@ -45,6 +45,12 @@ inline fun <T> IndexedList<T>.forEachIndexed(action: (Int, T) -> Unit) {
}
}
+inline fun <T> IndexedList<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, this[index])
+ }
+}
+
@Suppress("NOTHING_TO_INLINE")
inline operator fun <T> IndexedList<T>.minus(element: T): IndexedList<T> =
copy().apply { this -= element }
@@ -55,8 +61,8 @@ inline operator fun <T> IndexedList<T>.minusAssign(element: T) {
}
inline fun <T> IndexedList<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return false
}
}
@@ -74,8 +80,8 @@ inline operator fun <T> IndexedList<T>.plusAssign(element: T) {
inline fun <T> IndexedList<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, this[index])) {
+ forEachReversedIndexed { index, element ->
+ if (predicate(index, element)) {
removeAt(index)
isChanged = true
}
@@ -85,8 +91,8 @@ inline fun <T> IndexedList<T>.removeAllIndexed(predicate: (Int, T) -> Boolean):
inline fun <T> IndexedList<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, this[index])) {
+ forEachReversedIndexed { index, element ->
+ if (!predicate(index, element)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt
index 1c42c50e0241..c40f7eefd1d4 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IndexedListSet.kt
@@ -70,8 +70,8 @@ class IndexedListSet<T> private constructor(
}
inline fun <T> IndexedListSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (!predicate(index, element)) {
return false
}
}
@@ -79,8 +79,8 @@ inline fun <T> IndexedListSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boo
}
inline fun <T> IndexedListSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return true
}
}
@@ -93,6 +93,12 @@ inline fun <T> IndexedListSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
}
}
+inline fun <T> IndexedListSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, elementAt(index))
+ }
+}
+
inline val <T> IndexedListSet<T>.lastIndex: Int
get() = size - 1
@@ -106,8 +112,8 @@ inline operator fun <T> IndexedListSet<T>.minusAssign(element: T) {
}
inline fun <T> IndexedListSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return false
}
}
@@ -125,8 +131,8 @@ inline operator fun <T> IndexedListSet<T>.plusAssign(element: T) {
inline fun <T> IndexedListSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (predicate(index, element)) {
removeAt(index)
isChanged = true
}
@@ -136,8 +142,8 @@ inline fun <T> IndexedListSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean
inline fun <T> IndexedListSet<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (!predicate(index, element)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt
index 2448ff0755be..43f18e27f7aa 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IndexedMap.kt
@@ -21,8 +21,8 @@ import android.util.ArrayMap
typealias IndexedMap<K, V> = ArrayMap<K, V>
inline fun <K, V> IndexedMap<K, V>.allIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, keyAt(index), valueAt(index))) {
+ forEachIndexed { index, key, value ->
+ if (!predicate(index, key, value)) {
return false
}
}
@@ -30,8 +30,8 @@ inline fun <K, V> IndexedMap<K, V>.allIndexed(predicate: (Int, K, V) -> Boolean)
}
inline fun <K, V> IndexedMap<K, V>.anyIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, keyAt(index), valueAt(index))) {
+ forEachIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
return true
}
}
@@ -46,8 +46,8 @@ inline fun <K, V> IndexedMap<K, V>.copy(copyValue: (V) -> V): IndexedMap<K, V> =
}
inline fun <K, V, R> IndexedMap<K, V>.firstNotNullOfOrNullIndexed(transform: (Int, K, V) -> R): R? {
- for (index in 0 until size) {
- transform(index, keyAt(index), valueAt(index))?.let { return it }
+ forEachIndexed { index, key, value ->
+ transform(index, key, value)?.let { return it }
}
return null
}
@@ -64,6 +64,12 @@ inline fun <K, V> IndexedMap<K, V>.forEachKeyIndexed(action: (Int, K) -> Unit) {
}
}
+inline fun <K, V> IndexedMap<K, V>.forEachReversedIndexed(action: (Int, K, V) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, keyAt(index), valueAt(index))
+ }
+}
+
inline fun <K, V> IndexedMap<K, V>.forEachValueIndexed(action: (Int, V) -> Unit) {
for (index in 0 until size) {
action(index, valueAt(index))
@@ -90,6 +96,15 @@ inline operator fun <K, V> IndexedMap<K, V>.minusAssign(key: K) {
remove(key)
}
+inline fun <K, V> IndexedMap<K, V>.noneIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
+ forEachIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
+ return false
+ }
+ }
+ return true
+}
+
@Suppress("NOTHING_TO_INLINE")
inline fun <K, V> IndexedMap<K, V>.putWithDefault(key: K, value: V, defaultValue: V): V {
val index = indexOfKey(key)
@@ -113,8 +128,8 @@ inline fun <K, V> IndexedMap<K, V>.putWithDefault(key: K, value: V, defaultValue
inline fun <K, V> IndexedMap<K, V>.removeAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, keyAt(index), valueAt(index))) {
+ forEachReversedIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
removeAt(index)
isChanged = true
}
@@ -124,8 +139,8 @@ inline fun <K, V> IndexedMap<K, V>.removeAllIndexed(predicate: (Int, K, V) -> Bo
inline fun <K, V> IndexedMap<K, V>.retainAllIndexed(predicate: (Int, K, V) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, keyAt(index), valueAt(index))) {
+ forEachReversedIndexed { index, key, value ->
+ if (!predicate(index, key, value)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt b/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt
index faaa6d3a23f1..13fa31f01864 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IndexedSet.kt
@@ -21,8 +21,8 @@ import android.util.ArraySet
typealias IndexedSet<T> = ArraySet<T>
inline fun <T> IndexedSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (!predicate(index, element)) {
return false
}
}
@@ -30,8 +30,8 @@ inline fun <T> IndexedSet<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean
}
inline fun <T> IndexedSet<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return true
}
}
@@ -50,6 +50,12 @@ inline fun <T> IndexedSet<T>.forEachIndexed(action: (Int, T) -> Unit) {
}
}
+inline fun <T> IndexedSet<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, elementAt(index))
+ }
+}
+
inline val <T> IndexedSet<T>.lastIndex: Int
get() = size - 1
@@ -63,8 +69,8 @@ inline operator fun <T> IndexedSet<T>.minusAssign(element: T) {
}
inline fun <T> IndexedSet<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return false
}
}
@@ -82,8 +88,8 @@ inline operator fun <T> IndexedSet<T>.plusAssign(element: T) {
inline fun <T> IndexedSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (predicate(index, element)) {
removeAt(index)
isChanged = true
}
@@ -93,8 +99,8 @@ inline fun <T> IndexedSet<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): B
inline fun <T> IndexedSet<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (!predicate(index, element)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntMap.kt b/services/permission/java/com/android/server/permission/access/collection/IntMap.kt
index 0044b7359ef3..3e05939382d3 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IntMap.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IntMap.kt
@@ -21,8 +21,8 @@ import android.util.SparseArray
typealias IntMap<T> = SparseArray<T>
inline fun <T> IntMap<T>.allIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, keyAt(index), valueAt(index))) {
+ forEachIndexed { index, key, value ->
+ if (!predicate(index, key, value)) {
return false
}
}
@@ -30,8 +30,8 @@ inline fun <T> IntMap<T>.allIndexed(predicate: (Int, Int, T) -> Boolean): Boolea
}
inline fun <T> IntMap<T>.anyIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, keyAt(index), valueAt(index))) {
+ forEachIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
return true
}
}
@@ -46,8 +46,8 @@ inline fun <T> IntMap<T>.copy(copyValue: (T) -> T): IntMap<T> =
}
inline fun <T, R> IntMap<T>.firstNotNullOfOrNullIndexed(transform: (Int, Int, T) -> R): R? {
- for (index in 0 until size) {
- transform(index, keyAt(index), valueAt(index))?.let { return it }
+ forEachIndexed { index, key, value ->
+ transform(index, key, value)?.let { return it }
}
return null
}
@@ -64,6 +64,12 @@ inline fun <T> IntMap<T>.forEachKeyIndexed(action: (Int, Int) -> Unit) {
}
}
+inline fun <T> IntMap<T>.forEachReversedIndexed(action: (Int, Int, T) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, keyAt(index), valueAt(index))
+ }
+}
+
inline fun <T> IntMap<T>.forEachValueIndexed(action: (Int, T) -> Unit) {
for (index in 0 until size) {
action(index, valueAt(index))
@@ -91,8 +97,8 @@ inline operator fun <T> IntMap<T>.minusAssign(key: Int) {
}
inline fun <T> IntMap<T>.noneIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, keyAt(index), valueAt(index))) {
+ forEachIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
return false
}
}
@@ -122,8 +128,8 @@ inline fun <T> IntMap<T>.putWithDefault(key: Int, value: T, defaultValue: T): T
inline fun <T> IntMap<T>.removeAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, keyAt(index), valueAt(index))) {
+ forEachReversedIndexed { index, key, value ->
+ if (predicate(index, key, value)) {
removeAt(index)
isChanged = true
}
@@ -133,8 +139,8 @@ inline fun <T> IntMap<T>.removeAllIndexed(predicate: (Int, Int, T) -> Boolean):
inline fun <T> IntMap<T>.retainAllIndexed(predicate: (Int, Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, keyAt(index), valueAt(index))) {
+ forEachReversedIndexed { index, key, value ->
+ if (!predicate(index, key, value)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/IntSet.kt b/services/permission/java/com/android/server/permission/access/collection/IntSet.kt
index 0d75a4c87a89..4717251e9153 100644
--- a/services/permission/java/com/android/server/permission/access/collection/IntSet.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/IntSet.kt
@@ -54,8 +54,8 @@ class IntSet private constructor(
fun IntSet(values: IntArray): IntSet = IntSet().apply{ this += values }
inline fun IntSet.allIndexed(predicate: (Int, Int) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (!predicate(index, element)) {
return false
}
}
@@ -63,8 +63,8 @@ inline fun IntSet.allIndexed(predicate: (Int, Int) -> Boolean): Boolean {
}
inline fun IntSet.anyIndexed(predicate: (Int, Int) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return true
}
}
@@ -77,6 +77,12 @@ inline fun IntSet.forEachIndexed(action: (Int, Int) -> Unit) {
}
}
+inline fun IntSet.forEachReversedIndexed(action: (Int, Int) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, elementAt(index))
+ }
+}
+
inline val IntSet.lastIndex: Int
get() = size - 1
@@ -89,8 +95,8 @@ inline operator fun IntSet.minusAssign(element: Int) {
}
inline fun IntSet.noneIndexed(predicate: (Int, Int) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, elementAt(index))) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return false
}
}
@@ -115,8 +121,8 @@ operator fun IntSet.plusAssign(array: IntArray) {
inline fun IntSet.removeAllIndexed(predicate: (Int, Int) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (predicate(index, element)) {
removeAt(index)
isChanged = true
}
@@ -126,8 +132,8 @@ inline fun IntSet.removeAllIndexed(predicate: (Int, Int) -> Boolean): Boolean {
inline fun IntSet.retainAllIndexed(predicate: (Int, Int) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, elementAt(index))) {
+ forEachReversedIndexed { index, element ->
+ if (!predicate(index, element)) {
removeAt(index)
isChanged = true
}
diff --git a/services/permission/java/com/android/server/permission/access/collection/List.kt b/services/permission/java/com/android/server/permission/access/collection/List.kt
index d35e69e88e72..91f15bcfb3e2 100644
--- a/services/permission/java/com/android/server/permission/access/collection/List.kt
+++ b/services/permission/java/com/android/server/permission/access/collection/List.kt
@@ -17,8 +17,8 @@
package com.android.server.permission.access.collection
inline fun <T> List<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (!predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (!predicate(index, element)) {
return false
}
}
@@ -26,8 +26,8 @@ inline fun <T> List<T>.allIndexed(predicate: (Int, T) -> Boolean): Boolean {
}
inline fun <T> List<T>.anyIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return true
}
}
@@ -40,9 +40,15 @@ inline fun <T> List<T>.forEachIndexed(action: (Int, T) -> Unit) {
}
}
+inline fun <T> List<T>.forEachReversedIndexed(action: (Int, T) -> Unit) {
+ for (index in lastIndex downTo 0) {
+ action(index, this[index])
+ }
+}
+
inline fun <T> List<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
- for (index in 0 until size) {
- if (predicate(index, this[index])) {
+ forEachIndexed { index, element ->
+ if (predicate(index, element)) {
return false
}
}
@@ -51,8 +57,8 @@ inline fun <T> List<T>.noneIndexed(predicate: (Int, T) -> Boolean): Boolean {
inline fun <T> MutableList<T>.removeAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (predicate(index, this[index])) {
+ forEachReversedIndexed { index, element ->
+ if (predicate(index, element)) {
removeAt(index)
isChanged = true
}
@@ -62,8 +68,8 @@ inline fun <T> MutableList<T>.removeAllIndexed(predicate: (Int, T) -> Boolean):
inline fun <T> MutableList<T>.retainAllIndexed(predicate: (Int, T) -> Boolean): Boolean {
var isChanged = false
- for (index in lastIndex downTo 0) {
- if (!predicate(index, this[index])) {
+ forEachReversedIndexed { index, element ->
+ if (!predicate(index, element)) {
removeAt(index)
isChanged = true
}