From e9840c5848d40f35a29dd5fd89946e33ea8ff521 Mon Sep 17 00:00:00 2001 From: crc-32 Date: Fri, 24 May 2024 05:30:25 +0100 Subject: [PATCH] optin to experimentalforeignapi --- src/iosMain/kotlin/util/UtilFunctions.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/iosMain/kotlin/util/UtilFunctions.kt b/src/iosMain/kotlin/util/UtilFunctions.kt index 1922e80..255cc24 100644 --- a/src/iosMain/kotlin/util/UtilFunctions.kt +++ b/src/iosMain/kotlin/util/UtilFunctions.kt @@ -6,7 +6,7 @@ import platform.posix.memcpy import platform.posix.size_t actual fun runBlocking(block: suspend () -> Unit) = kotlinx.coroutines.runBlocking{block()} - +@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class) internal fun isPlatformBigEndian(): Boolean { memScoped { val i = alloc() @@ -22,10 +22,12 @@ internal fun reverseOrd(varr: UInt): UInt = ((reverseOrd((varr and 0xffffu).toUS internal fun reverseOrd(varr: ULong): ULong = ((reverseOrd((varr and 0xffffffffu).toUInt()).toLong() shl 32) or (reverseOrd((varr shr 32).toUInt()).toLong() and 0xffffffff)).toULong() +@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class) fun ByteArray.toNative(): NSData = memScoped { NSData.create(bytes = allocArrayOf(this@toNative), length = castToNativeSize(this@toNative.size)) } +@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class) fun KUtil.byteArrayFromNative(arr: NSData): ByteArray = ByteArray(arr.length.toInt()).apply { if (this.isNotEmpty()) { usePinned { @@ -34,6 +36,7 @@ fun KUtil.byteArrayFromNative(arr: NSData): ByteArray = ByteArray(arr.length.toI } } +@OptIn(kotlinx.cinterop.ExperimentalForeignApi::class) internal fun castToNativeSize(v: Int): size_t { @Suppress("CAST_NEVER_SUCCEEDS", "USELESS_CAST") // Depending on the platform different side of if will trigger, lets ignore return if (size_t.SIZE_BITS == 32) {