Unify Array.copyOf and copyOfRange function templates between JVM and JS.

This commit is contained in:
Ilya Gorbunov
2016-12-08 04:46:18 +03:00
parent 572a63f0e2
commit 202cd81134
5 changed files with 510 additions and 538 deletions
+207 -207
View File
@@ -12850,6 +12850,213 @@ public inline fun CharArray.asList(): List<Char> {
return this.unsafeCast<Array<Char>>().asList()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun <T> Array<out T>.copyOf(): Array<T> {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ByteArray.copyOf(): ByteArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ShortArray.copyOf(): ShortArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun IntArray.copyOf(): IntArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun LongArray.copyOf(): LongArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun FloatArray.copyOf(): FloatArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun DoubleArray.copyOf(): DoubleArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun BooleanArray.copyOf(): BooleanArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun CharArray.copyOf(): CharArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun ByteArray.copyOf(newSize: Int): ByteArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun ShortArray.copyOf(newSize: Int): ShortArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun IntArray.copyOf(newSize: Int): IntArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun LongArray.copyOf(newSize: Int): LongArray {
return arrayCopyResize(this, newSize, 0L)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun FloatArray.copyOf(newSize: Int): FloatArray {
return arrayCopyResize(this, newSize, 0.0f)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun DoubleArray.copyOf(newSize: Int): DoubleArray {
return arrayCopyResize(this, newSize, 0.0)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun BooleanArray.copyOf(newSize: Int): BooleanArray {
return arrayCopyResize(this, newSize, false)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun CharArray.copyOf(newSize: Int): CharArray {
return arrayCopyResize(this, newSize, '\u0000')
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
public fun <T> Array<out T>.copyOf(newSize: Int): Array<T?> {
return arrayCopyResize(this, newSize, null)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun <T> Array<out T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T> {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Sorts the array in-place.
*/
@@ -12978,213 +13185,6 @@ public fun CharArray.toTypedArray(): Array<Char> {
return copyOf().unsafeCast<Array<Char>>()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun <T> Array<out T>.copyOf(): Array<T> {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ByteArray.copyOf(): ByteArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ShortArray.copyOf(): ShortArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun IntArray.copyOf(): IntArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun LongArray.copyOf(): LongArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun FloatArray.copyOf(): FloatArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun DoubleArray.copyOf(): DoubleArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun BooleanArray.copyOf(): BooleanArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun CharArray.copyOf(): CharArray {
return this.asDynamic().slice()
}
/**
* Returns new array which is a copy of the original array.
*/
public fun ByteArray.copyOf(newSize: Int): ByteArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun ShortArray.copyOf(newSize: Int): ShortArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun IntArray.copyOf(newSize: Int): IntArray {
return arrayCopyResize(this, newSize, 0)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun LongArray.copyOf(newSize: Int): LongArray {
return arrayCopyResize(this, newSize, 0L)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun FloatArray.copyOf(newSize: Int): FloatArray {
return arrayCopyResize(this, newSize, 0.0f)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun DoubleArray.copyOf(newSize: Int): DoubleArray {
return arrayCopyResize(this, newSize, 0.0)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun BooleanArray.copyOf(newSize: Int): BooleanArray {
return arrayCopyResize(this, newSize, false)
}
/**
* Returns new array which is a copy of the original array.
*/
public fun CharArray.copyOf(newSize: Int): CharArray {
return arrayCopyResize(this, newSize, '\u0000')
}
/**
* Returns new array which is a copy of the original array.
*/
public fun <T> Array<out T>.copyOf(newSize: Int): Array<T?> {
return arrayCopyResize(this, newSize, null)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun <T> Array<out T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T> {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@Suppress("NOTHING_TO_INLINE")
public inline fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {
return this.asDynamic().slice(fromIndex, toIndex)
}
/**
* Returns an array containing all elements of the original array and then the given [element].
*/
+216 -243
View File
@@ -12989,6 +12989,222 @@ public fun CharArray.asList(): List<Char> {
}
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOf(): Array<T> {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOf(): ByteArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOf(): ShortArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOf(): IntArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOf(): LongArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOf(): FloatArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOf(): DoubleArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOf(): BooleanArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOf(): CharArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOf(newSize: Int): ByteArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOf(newSize: Int): ShortArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOf(newSize: Int): IntArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOf(newSize: Int): LongArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOf(newSize: Int): FloatArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOf(newSize: Int): DoubleArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOf(newSize: Int): BooleanArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOf(newSize: Int): CharArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array, resized to the given [newSize].
*/
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOf(newSize: Int): Array<T?> {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T> {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Sorts the array in-place.
*/
@@ -13285,249 +13501,6 @@ public fun CharArray.binarySearch(element: Char, fromIndex: Int = 0, toIndex: In
return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOf(): Array<T> {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOf(): ByteArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOf(): ShortArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOf(): IntArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOf(): LongArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOf(): FloatArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOf(): DoubleArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOf(): BooleanArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOf(): CharArray {
return java.util.Arrays.copyOf(this, size)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOf(newSize: Int): Array<T?> {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOf(newSize: Int): ByteArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOf(newSize: Int): ShortArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOf(newSize: Int): IntArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOf(newSize: Int): LongArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOf(newSize: Int): FloatArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOf(newSize: Int): DoubleArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOf(newSize: Int): BooleanArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of the original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOf(newSize: Int): CharArray {
return java.util.Arrays.copyOf(this, newSize)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun <T> Array<T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T> {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Returns new array which is a copy of range of original array.
*/
@kotlin.jvm.JvmVersion
@kotlin.internal.InlineOnly
public inline fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray {
return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)
}
/**
* Fills original array with the provided value.
*/
@@ -21,57 +21,6 @@ import templates.Family.*
fun specialJS(): List<GenericFunction> {
val templates = arrayListOf<GenericFunction>()
templates add f("copyOfRange(fromIndex: Int, toIndex: Int)") {
// TODO: Arguments checking as in java?
only(ArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of range of original array." }
inline(true)
annotations("""@Suppress("NOTHING_TO_INLINE")""")
returns("SELF")
returns(ArraysOfObjects) { "Array<T>" }
body {
"return this.asDynamic().slice(fromIndex, toIndex)"
}
}
templates add f("copyOf()") {
only(ArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of the original array." }
inline(true)
annotations("""@Suppress("NOTHING_TO_INLINE")""")
returns("SELF")
returns(ArraysOfObjects) { "Array<T>" }
body {
"return this.asDynamic().slice()"
}
}
val allArrays = PrimitiveType.defaultPrimitives.map { ArraysOfPrimitives to it } + (ArraysOfObjects to null)
templates addAll allArrays.map {
val (family, primitive) = it
f("copyOf(newSize: Int)") {
only(family)
val defaultValue: String
if (primitive != null) {
returns("SELF")
only(primitive)
defaultValue = when (primitive) {
PrimitiveType.Boolean -> false.toString()
PrimitiveType.Char -> "'\\u0000'"
else -> "ZERO"
}
} else {
returns(ArraysOfObjects) { "Array<T?>" }
defaultValue = "null"
}
doc { "Returns new array which is a copy of the original array." }
body {
"""
return arrayCopyResize(this, newSize, $defaultValue)
"""
}
}
}
templates add f("plusElement(element: T)") {
@@ -80,42 +80,6 @@ fun specialJVM(): List<GenericFunction> {
}
}
templates add f("copyOfRange(fromIndex: Int, toIndex: Int)") {
inline(Inline.Only)
only(InvariantArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of range of original array." }
returns("SELF")
body {
"return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)"
}
}
templates add f("copyOf()") {
inline(Inline.Only)
only(InvariantArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of the original array." }
returns("SELF")
body {
"return java.util.Arrays.copyOf(this, size)"
}
}
// This overload can cause nulls if array size is expanding, hence different return overload
templates add f("copyOf(newSize: Int)") {
inline(Inline.Only)
only(InvariantArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of the original array." }
returns("SELF")
returns(InvariantArraysOfObjects) { "Array<T?>" }
body {
"return java.util.Arrays.copyOf(this, newSize)"
}
}
templates add f("fill(element: T, fromIndex: Int = 0, toIndex: Int = size)") {
only(InvariantArraysOfObjects, ArraysOfPrimitives)
doc { "Fills original array with the provided value." }
@@ -250,6 +214,83 @@ fun specialJVM(): List<GenericFunction> {
}
object CommonArrays {
// TODO: plus
fun f_copyOfRange() = f("copyOfRange(fromIndex: Int, toIndex: Int)") {
inline(Platform.JVM, Inline.Only)
inline(Platform.JS, Inline.Yes)
annotations(Platform.JS, """@Suppress("NOTHING_TO_INLINE")""")
only(InvariantArraysOfObjects, ArraysOfPrimitives)
only(Platform.JS, ArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of range of original array." }
returns("SELF")
returns(Platform.JS, ArraysOfObjects) { "Array<T>" }
body(Platform.JVM) {
"return java.util.Arrays.copyOfRange(this, fromIndex, toIndex)"
}
body(Platform.JS) {
// TODO: Arguments checking as in java?
"return this.asDynamic().slice(fromIndex, toIndex)"
}
}
fun f_copyOf() = f("copyOf()") {
inline(Platform.JVM, Inline.Only)
inline(Platform.JS, Inline.Yes)
annotations(Platform.JS, """@Suppress("NOTHING_TO_INLINE")""")
only(InvariantArraysOfObjects, ArraysOfPrimitives)
only(Platform.JS, ArraysOfObjects, ArraysOfPrimitives)
only(InvariantArraysOfObjects, ArraysOfPrimitives)
doc { "Returns new array which is a copy of the original array." }
returns("SELF")
returns(Platform.JS, ArraysOfObjects) { "Array<T>" }
body(Platform.JVM) {
"return java.util.Arrays.copyOf(this, size)"
}
body(Platform.JS) {
"return this.asDynamic().slice()"
}
}
fun f_copyOfResized() =
(PrimitiveType.defaultPrimitives.map { ArraysOfPrimitives to it } + (InvariantArraysOfObjects to null)).map {
val (family, primitive) = it
f("copyOf(newSize: Int)") {
only(family)
if (family == InvariantArraysOfObjects) {
only(Platform.JS, ArraysOfObjects)
}
inline(Platform.JVM, Inline.Only)
doc { "Returns new array which is a copy of the original array, resized to the given [newSize]." }
val defaultValue: String
if (primitive != null) {
only(primitive)
returns("SELF")
defaultValue = when (primitive) {
PrimitiveType.Boolean -> false.toString()
PrimitiveType.Char -> "'\\u0000'"
else -> "ZERO"
}
} else {
returns { "Array<T?>" }
defaultValue = "null"
}
body(Platform.JVM) {
"return java.util.Arrays.copyOf(this, newSize)"
}
body(Platform.JS) {
"""
return arrayCopyResize(this, newSize, $defaultValue)
"""
}
}
}
fun f_sortPrimitives() =
(PrimitiveType.numericPrimitives + PrimitiveType.Char).map { primitive ->
f("sort()") {
@@ -372,5 +413,9 @@ object CommonArrays {
}
// TODO: use reflection later to get all functions of matching type
fun templates() = f_sortPrimitives() + listOf(f_sort(), f_sortWith(), f_asList(), f_toTypedArray())
fun templates() =
listOf(f_copyOf(), f_copyOfRange()) +
f_copyOfResized() +
f_sortPrimitives() +
listOf(f_sort(), f_sortWith(), f_asList(), f_toTypedArray())
}
@@ -233,6 +233,11 @@ class GenericFunction(val signature: String, val keyword: String = "fun") {
buildFamilies(families.toSet())
}
fun only(platform: Platform, vararg families: Family) {
require(families.isNotEmpty()) { "Need to specify families" }
buildFamilies(families.toSet(), platform)
}
fun only(vararg primitives: PrimitiveType) {
only(primitives.asList())
}