Interop: add minor improvements
This commit is contained in:
@@ -196,3 +196,7 @@ class Arena : Placement, Closeable {
|
|||||||
override fun close() = clear()
|
override fun close() = clear()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <T : NativeRef> Placement.alloc(type: NativeRef.TypeWithSize<T>): T {
|
||||||
|
return type.byPtr(this.alloc(type.size))
|
||||||
|
}
|
||||||
@@ -19,14 +19,16 @@ fun free(ptr: NativePtr?) {
|
|||||||
|
|
||||||
fun free(ref: NativeRef?) = free(ref.getNativePtr())
|
fun free(ref: NativeRef?) = free(ref.getNativePtr())
|
||||||
|
|
||||||
fun <T : NativeRef> mallocNativeArrayOf(elemType: NativeRef.Type<T>, vararg elements: T?): NativeArray<RefBox<T>> {
|
fun <T : NativeRef> Placement.allocNativeArrayOf(elemType: NativeRef.Type<T>, vararg elements: T?): NativeArray<RefBox<T>> {
|
||||||
val res = malloc(array[elements.size](elemType.ref))
|
val res = this.alloc(array[elements.size](elemType.ref))
|
||||||
elements.forEachIndexed { i, element ->
|
elements.forEachIndexed { i, element ->
|
||||||
res[i].value = element
|
res[i].value = element
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <T : NativeRef> mallocNativeArrayOf(elemType: NativeRef.Type<T>, vararg elements: T?) = heap.allocNativeArrayOf(elemType, *elements)
|
||||||
|
|
||||||
fun CString.Companion.fromString(str: String?): CString? {
|
fun CString.Companion.fromString(str: String?): CString? {
|
||||||
if (str == null) {
|
if (str == null) {
|
||||||
return null
|
return null
|
||||||
|
|||||||
Reference in New Issue
Block a user