From 45e9211943ad0d65cf3d0cadb38df27ef24fa422 Mon Sep 17 00:00:00 2001 From: nik Date: Sun, 1 Dec 2013 15:02:45 +0400 Subject: [PATCH] standard library: added isEmpty/isNotEmpty functions for primitive arrays --- .../stdlib/src/generated/_BooleanArrays.kt | 14 +++++++++ libraries/stdlib/src/generated/_ByteArrays.kt | 14 +++++++++ libraries/stdlib/src/generated/_CharArrays.kt | 14 +++++++++ .../stdlib/src/generated/_DoubleArrays.kt | 14 +++++++++ .../stdlib/src/generated/_FloatArrays.kt | 14 +++++++++ libraries/stdlib/src/generated/_IntArrays.kt | 14 +++++++++ libraries/stdlib/src/generated/_LongArrays.kt | 14 +++++++++ .../stdlib/src/generated/_ShortArrays.kt | 14 +++++++++ libraries/stdlib/test/ArraysJVMTest.kt | 24 +++++++++++++++ .../src/generators/GenerateStandardLib.kt | 8 ++--- .../kotlin-stdlib-gen/src/templates/Arrays.kt | 29 +++++++++++++++++++ .../src/templates/Iterables.kt | 4 +-- 12 files changed, 171 insertions(+), 6 deletions(-) create mode 100644 libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt diff --git a/libraries/stdlib/src/generated/_BooleanArrays.kt b/libraries/stdlib/src/generated/_BooleanArrays.kt index 8ad3cfcbc84..6d05a7a54ec 100644 --- a/libraries/stdlib/src/generated/_BooleanArrays.kt +++ b/libraries/stdlib/src/generated/_BooleanArrays.kt @@ -183,6 +183,20 @@ public inline fun BooleanArray.groupByTo(result: MutableMap ByteArray.groupByTo(result: MutableMap CharArray.groupByTo(result: MutableMap DoubleArray.groupByTo(result: MutableMap FloatArray.groupByTo(result: MutableMap IntArray.groupByTo(result: MutableMap> return result } +/** + * Returns true if the array is empty + */ +public fun IntArray.isEmpty() : Boolean { + return size == 0 +} + +/** + * Returns true if the array is empty + */ +public fun IntArray.isNotEmpty() : Boolean { + return !isEmpty() +} + /** * Creates a string from all the elements separated using the *separator* and using the given *prefix* and *postfix* if supplied. * If a collection could be huge you can specify a non-negative value of *limit* which will only show a subset of the collection then it will diff --git a/libraries/stdlib/src/generated/_LongArrays.kt b/libraries/stdlib/src/generated/_LongArrays.kt index 8632cf9c70b..cf7852fb132 100644 --- a/libraries/stdlib/src/generated/_LongArrays.kt +++ b/libraries/stdlib/src/generated/_LongArrays.kt @@ -183,6 +183,20 @@ public inline fun LongArray.groupByTo(result: MutableMap ShortArray.groupByTo(result: MutableMap) { buildFor(Iterators, null) } - val iterables = iterables() + val arrays = arrays() val sumFunctions = PrimitiveType.values().map(::sumFunction).filterNotNull() - (iterables + sumFunctions).writeTo(File(outDir, "_Arrays.kt")) { + (arrays + sumFunctions).writeTo(File(outDir, "_Arrays.kt")) { buildFor(Arrays, null) } for (primitive in PrimitiveType.values()) { - (iterables + sumFunction(primitive)).filterNotNull().writeTo(File(outDir, "_${primitive.name}Arrays.kt")) { + (arrays + sumFunction(primitive)).filterNotNull().writeTo(File(outDir, "_${primitive.name}Arrays.kt")) { buildFor(PrimitiveArrays, primitive) } } - (iterables + sumFunctions).writeTo(File(outDir, "_Iterables.kt")) { + (iterables().sort() + sumFunctions).writeTo(File(outDir, "_Iterables.kt")) { buildFor(Iterables, null) } diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt new file mode 100644 index 00000000000..1d93c7b698d --- /dev/null +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt @@ -0,0 +1,29 @@ +package templates + +import templates.Family.* + +fun arrays(): List { + val templates = iterables() + + templates add f("isEmpty()") { + absentFor(Arrays) + isInline = false + doc = "Returns true if the array is empty" + returns("Boolean") + body { + "return size == 0" + } + } + + templates add f("isNotEmpty()") { + absentFor(Arrays) + isInline = false + doc = "Returns true if the array is empty" + returns("Boolean") + body { + "return !isEmpty()" + } + } + + return templates.sort() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Iterables.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Iterables.kt index 34be26ce2bb..f786ecf7293 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Iterables.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Iterables.kt @@ -3,7 +3,7 @@ package templates import java.util.ArrayList import templates.Family.* -fun iterables(): List { +fun iterables(): ArrayList { val templates = commons() @@ -140,5 +140,5 @@ fun iterables(): List { } } - return templates.sort() + return templates }