Запись в значение в UnsafePointer<DSPSplitComplex>
Из того, что я понял, UnsafePointer представляет pointee неизменяемым, а UnsafeMutablePointer представляет pointee изменчивым. Но подпись для функции vDSP vDSP_zrvmul выглядит следующим образом:
func vDSP_zrvmul(_ __A: UnsafePointer<DSPSplitComplex>,
_ __IA: vDSP_Stride,
_ __B: UnsafePointer<Float>,
_ __IB: vDSP_Stride,
_ __C: UnsafePointer<DSPSplitComplex>,
_ __IC: vDSP_Stride,
_ __N: vDSP_Length)
__C
должен быть выходным вектором, но он не является изменяемым... что мне не хватает? Спасибо за прочтение.
1 ответ
Решение
__A
а также __C
являются указателями на DSPSplitComplex
:
public struct DSPSplitComplex {
public var realp: UnsafeMutablePointer<Float>
public var imagp: UnsafeMutablePointer<Float>
}
которые содержат изменяемые указатели на массивы значений с плавающей точкой.
vDSP_zrvmul
записывает вывод в массивы, на которые указывает __C.realp
а также __C.imagp
, но __C
Сам не мутировал.