Нашел ответ на мой вопрос. Приходится использовать
memScoped
.
memScoped {
var pointed : UIntVar = alloc<UIntVar>()
scanner.scanHexInt(pointed.ptr)
val alpha: CGFloat = 1.0
val pointedValue = pointed.value
val r: CGFloat = (((pointedValue and 0xFF0000) shr 16)/255.0)
....
}
Здесь указан единственный источник на rnet (что касается его применения для получения указателя) здесь - ссылка
memScoped
inline fun <R> memScoped(block: MemScope.() -> R): R
Runs given block providing allocation of memory which will be automatically disposed at the end of this scope
Внутри него используйте функцию расширения allo c () , чтобы получить CVariable
fun <reified T : CVariable> NativePlacement.alloc(): T
, который затем дает вам доступ к указателю с помощью еще одной функции расширения
val <T : CPointed> T.ptr: CPointer<T>
Все очень ясно в ретроспективе и ясно, что изначально подходил к проблеме неправильно, пытаясь получить указатель чем-то вроде CPointer<UInt> = ...
Официальная документация на https://kotlinlang.org/docs/reference/native/c_interop.html