I have 2 functions
func VolExtContextInitializer( extData: UnsafeMutablePointer<Void>, ctxType:UnsafePointer<UInt8>, ctx:FREContext, inout numFunctionsToTest:UnsafeMutablePointer<UInt32>, functionsToSet:AutoreleasingUnsafeMutablePointer<FRENamedFunction>){
var numOfFunc:UInt32 = 2
//stuff
}
func VolumeExtensionInitializer(inout extDataToSet: AutoreleasingUnsafeMutablePointer<Void>, inout ctxInitializerToSet: UnsafeMutablePointer<FREContextInitializer> , inout ctxFinalizerToSet: UnsafeMutablePointer<FREContextFinalizer>){
extDataToSet = nil
ctxInitializerToSet = &VolExtContextInitializer
}
I need to set ctxInitializerToSet to the reference of VolExtContextInitializer as dictated by the C library attached to this. This (ctxInitializerToSet = &VolExtContextInitializer) gives me the error of "Types of expression is ambiguous without more context". I'm not sure how to make it more clear for the compiler.
thanks.
OK, if the two function types are defined as such in C, the two functions in Swift needs to have the following header.
To match FREContextInitializer:
func VolExtContextInitializer(extData: UnsafeMutablePointer<Void>,
ctxType: UnsafePointer<UInt8>,
ctx: FREContext,
numFunctionsToTest: UnsafeMutablePointer<UInt32>,
functionsToSet: UnsafeMutablePointer<UnsafePointer<FRENamedFunction>>)
For FREInitializer:
func VolumeExtensionInitializer(extDataToSet: UnsafeMutablePointer<UnsafeMutablePointer<Void>>,
ctxInitializerToSet: UnsafeMutablePointer<FREContextInitializer?>,
ctxFinalizerToSet: UnsafeMutablePointer<FREContextFinalizer?>)
So, your VolumeExtensionInitializer should be like this:
func VolumeExtensionInitializer(extDataToSet: UnsafeMutablePointer<UnsafeMutablePointer<Void>>,
ctxInitializerToSet: UnsafeMutablePointer<FREContextInitializer?>,
ctxFinalizerToSet: UnsafeMutablePointer<FREContextFinalizer?>)
{
extDataToSet.memory = nil
ctxInitializerToSet.memory = VolExtContextInitializer
//...
}