Swift briding is brittle when C-structs contain pointer types. Keep it simple or the type bridge will default to an opaque pointer with no member accessors
/// .h
struct CResult {
NSArray * _Nullable value;
NSError * _Nullable error;
};
typedef struct CResult CResult;
/// .m
{
// stack
CResult result = {
.value = value,
.error = error
};
// heap
CResult *result = malloc(sizeof(CResult));
result->value = value;
result->error = error;
return result;
}
/// bridged success
let result = CResult(value: [], error: nil)
/// bridge failed but typedef available
let resultPtr = UnsafeMutablePointer<CResult>.allocate(capacity: 1)
let result: DPPEntitlementResult = resultPtr.pointee
resultPtr.deallocate()