The current iOS binding generator only generates returns if the function being bound does not return an error. If a second error return type is also present, the binder always generates both the primary as well as the error as an output parameter. This is undersirable because most decent functions in Go will also return errors, so all of those get converted to plain methods iOS side, each of them requiring allocating the return variable first and only then execute the call. This gets even more annoying with the Swift error wrapping protocol which converts errors to throw statements automatically, but which still needs the ugly pre- allocs caused by the genrated bindings not returning the result, just placing it in an output argument. This CL changes that so that if a nullable result is being returned by a bound method from Go, then it is generated as a proper return and not an output argument. This allows erroring functions to still be called as a function in ObjC, and even more elegantly drop even the error part in Swift. Change-Id: I35152d7d2fd2a132eba836fa23be8fd4f317f097 Reviewed-on: https://go-review.googlesource.com/34072 Reviewed-by: Elias Naur <elias.naur@gmail.com>
59 lines
1.1 KiB
Plaintext
59 lines
1.1 KiB
Plaintext
// Objective-C API for talking to structs Go package.
|
|
// gobind -lang=objc structs
|
|
//
|
|
// File is generated by gobind. Do not edit.
|
|
|
|
#ifndef __GoStructs_H__
|
|
#define __GoStructs_H__
|
|
|
|
@import Foundation;
|
|
#include "GoUniverse.h"
|
|
|
|
|
|
@class GoStructsS;
|
|
@class GoStructsS2;
|
|
@protocol GoStructsI;
|
|
@class GoStructsI;
|
|
|
|
@interface GoStructsS : NSObject <goSeqRefInterface> {
|
|
}
|
|
@property(strong, readonly) id _ref;
|
|
|
|
- (id)initWithRef:(id)ref;
|
|
- (double)x;
|
|
- (void)setX:(double)v;
|
|
- (double)y;
|
|
- (void)setY:(double)v;
|
|
- (GoStructsS*)identity:(NSError**)error;
|
|
- (double)sum;
|
|
@end
|
|
|
|
@interface GoStructsS2 : NSObject <goSeqRefInterface> {
|
|
}
|
|
@property(strong, readonly) id _ref;
|
|
|
|
- (id)initWithRef:(id)ref;
|
|
- (void)m;
|
|
- (NSString*)string;
|
|
@end
|
|
|
|
@protocol GoStructsI <NSObject>
|
|
- (void)m;
|
|
@end
|
|
|
|
FOUNDATION_EXPORT GoStructsS* GoStructsIdentity(GoStructsS* s);
|
|
|
|
FOUNDATION_EXPORT GoStructsS* GoStructsIdentityWithError(GoStructsS* s, NSError** error);
|
|
|
|
@class GoStructsI;
|
|
|
|
@interface GoStructsI : NSObject <goSeqRefInterface, GoStructsI> {
|
|
}
|
|
@property(strong, readonly) id _ref;
|
|
|
|
- (instancetype)initWithRef:(id)ref;
|
|
- (void)m;
|
|
@end
|
|
|
|
#endif
|