Emitir una estructura Swift a UnsafeMutablePointer<Void>
casting void-pointers (1)
¿Hay alguna forma de convertir la dirección de una estructura Swift en un void UnsafeMutablePointer?
Intenté esto sin éxito:
struct TheStruct {
var a:Int = 0
}
var myStruct = TheStruct()
var address = UnsafeMutablePointer<Void>(&myStruct)
¡Gracias!
EDITAR: el contexto
En realidad, estoy tratando de portar a Swift el primer ejemplo en Learning CoreAudio .
Esto es lo que he hecho hasta ahora:
func myAQInputCallback(inUserData:UnsafeMutablePointer<Void>,
inQueue:AudioQueueRef,
inBuffer:AudioQueueBufferRef,
inStartTime:UnsafePointer<AudioTimeStamp>,
inNumPackets:UInt32,
inPacketDesc:UnsafePointer<AudioStreamPacketDescription>)
{ }
struct MyRecorder {
var recordFile: AudioFileID = AudioFileID()
var recordPacket: Int64 = 0
var running: Boolean = 0
}
var queue:AudioQueueRef = AudioQueueRef()
AudioQueueNewInput(&asbd,
myAQInputCallback,
&recorder, // <- this is where I *think* a void pointer is demanded
nil,
nil,
UInt32(0),
&queue)
Estoy haciendo esfuerzos para permanecer en Swift, pero si esto resulta ser más un problema que una ventaja, terminaré enlazando a una función C.
EDITAR: línea bottome
Si llegaste a esta pregunta porque estás tratando de usar AudioQueue de CoreAudio en Swift ... no lo hagas. (lea los comentarios para más detalles)
Hasta donde yo sé, el camino más corto es:
var myStruct = TheStruct()
var address = withUnsafeMutablePointer(&myStruct) {UnsafeMutablePointer<Void>($0)}
Pero, ¿por qué necesitas esto? Si quiere pasarlo como parámetro, puede (y debería):
func foo(arg:UnsafeMutablePointer<Void>) {
//...
}
var myStruct = TheStruct()
foo(&myStruct)