From 80ed5a24619fdbff817fb039cc30a3ea2b0e1eab Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 29 Sep 2016 17:23:41 +0700 Subject: [PATCH] Interop: add minor improvements --- .../Runtime/src/main/kotlin/kotlin_native/interop/Types.kt | 4 ++++ .../Runtime/src/main/kotlin/kotlin_native/interop/Utils.kt | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Types.kt b/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Types.kt index 1b2533eb85e..d51d41770c7 100644 --- a/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Types.kt +++ b/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Types.kt @@ -195,4 +195,8 @@ class Arena : Placement, Closeable { override fun close() = clear() +} + +fun Placement.alloc(type: NativeRef.TypeWithSize): T { + return type.byPtr(this.alloc(type.size)) } \ No newline at end of file diff --git a/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Utils.kt b/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Utils.kt index cc60ae9571f..d1de51c09cf 100644 --- a/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Utils.kt +++ b/Interop/Runtime/src/main/kotlin/kotlin_native/interop/Utils.kt @@ -19,14 +19,16 @@ fun free(ptr: NativePtr?) { fun free(ref: NativeRef?) = free(ref.getNativePtr()) -fun mallocNativeArrayOf(elemType: NativeRef.Type, vararg elements: T?): NativeArray> { - val res = malloc(array[elements.size](elemType.ref)) +fun Placement.allocNativeArrayOf(elemType: NativeRef.Type, vararg elements: T?): NativeArray> { + val res = this.alloc(array[elements.size](elemType.ref)) elements.forEachIndexed { i, element -> res[i].value = element } return res } +fun mallocNativeArrayOf(elemType: NativeRef.Type, vararg elements: T?) = heap.allocNativeArrayOf(elemType, *elements) + fun CString.Companion.fromString(str: String?): CString? { if (str == null) { return null