From aeb7666578e15498f4b1c8b6833a343c8a4164d0 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 22 Jul 2015 00:09:35 +0300 Subject: [PATCH] Provide binarySearch with comparator for arrays. --- libraries/stdlib/src/generated/_SpecialJVM.kt | 7 +++++++ .../tools/kotlin-stdlib-gen/src/templates/SpecialJVM.kt | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/libraries/stdlib/src/generated/_SpecialJVM.kt b/libraries/stdlib/src/generated/_SpecialJVM.kt index 543377cefbe..28ee4314768 100644 --- a/libraries/stdlib/src/generated/_SpecialJVM.kt +++ b/libraries/stdlib/src/generated/_SpecialJVM.kt @@ -137,6 +137,13 @@ public fun ShortArray.asList(): List { } } +/** + * Searches array or range of array for provided element index using binary search algorithm. Array is expected to be sorted according to the specified [comparator]. + */ +public fun Array.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size()): Int { + return Arrays.binarySearch(this, fromIndex, toIndex, element, comparator) +} + /** * Searches array or range of array for provided element index using binary search algorithm. Array is expected to be sorted. */ diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/SpecialJVM.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/SpecialJVM.kt index 0dffc7db4bd..e20926b59c7 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/SpecialJVM.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/SpecialJVM.kt @@ -104,6 +104,15 @@ fun specialJVM(): List { } } + templates add f("binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size())") { + only(ArraysOfObjects) + doc { "Searches array or range of array for provided element index using binary search algorithm. Array is expected to be sorted according to the specified [comparator]." } + returns("Int") + body { + "return Arrays.binarySearch(this, fromIndex, toIndex, element, comparator)" + } + } + templates add f("sort(fromIndex: Int = 0, toIndex: Int = size())") { only(ArraysOfObjects, ArraysOfPrimitives) exclude(PrimitiveType.Boolean)