Adam S
03/31/2023, 12:39 PMList<T>
(where T
is a CStructVar
) to CValuesRef<T>
?Adam S
03/31/2023, 12:40 PMOleg Yukhnevich
03/31/2023, 12:42 PMpoints
type in C?Adam S
03/31/2023, 12:44 PMvoid GeneratedExternalFunction(Vector2 *points)
Adam S
03/31/2023, 12:44 PMtypedef struct Vector2 {
float x;
float y;
} Vector2;
Adam S
03/31/2023, 12:45 PMpublic external expect fun GeneratedExternalFunction
(points: kotlinx.cinterop.CValuesRef<cinterop.Vector2>?): kotlin.Unit { /* compiled code */ }
public final expect class Vector2 public constructor(rawPtr: kotlinx.cinterop.NativePtr /* = kotlin.native.internal.NativePtr */) : kotlinx.cinterop.CStructVar {
public expect companion object : kotlinx.cinterop.CStructVar.Type {
}
public expect final var x: kotlin.Float /* compiled code */
public expect final var y: kotlin.Float /* compiled code */
}
Oleg Yukhnevich
03/31/2023, 12:47 PMval vectorValues: List<CValue<Vector2>> = vectors.map { it.readValue() }
val array = allocArray<T>(elements.size)
vectorValues.forEachIndexed { index, element -> element.place(array.get(index).ptr) }
GeneratedExternalFunction(array)
Oleg Yukhnevich
03/31/2023, 12:50 PMAdam S
03/31/2023, 12:52 PMAdam S
03/31/2023, 1:27 PMinline fun <reified T : CStructVar> NativePlacement.allocArrayOfStructs(
values: List<T>,
): CPointer<T> = allocArray(values.size) { index ->
values[index].readValue().place(ptr)
}
Oleg Yukhnevich
03/31/2023, 1:29 PM