// Objective-C API for talking to interfaces Go package.
//   gobind -lang=objc interfaces
//
// File is generated by gobind. Do not edit.

#include "GoInterfaces.h"
#include <Foundation/Foundation.h>
#include "seq.h"

static NSString* errDomain = @"go.interfaces";

@protocol goSeqRefInterface
-(GoSeqRef*) _ref;
@end

#define _DESCRIPTOR_ "interfaces"

@class GoInterfacesError;

@class GoInterfacesI;

@class GoInterfacesI3;

@class GoInterfacesWithParam;

@interface GoInterfacesError : NSObject <GoInterfacesError> {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (BOOL)err:(NSError**)error;
@end

@interface GoInterfacesI : NSObject <GoInterfacesI> {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (int32_t)rand;
@end

@interface GoInterfacesI3 : NSObject <GoInterfacesI3> {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (GoInterfacesI1*)f;
@end

@interface GoInterfacesWithParam : NSObject <GoInterfacesWithParam> {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (void)hasParam:(BOOL)p0;
@end

#define _GO_interfaces_Error_DESCRIPTOR_ "go.interfaces.Error"
#define _GO_interfaces_Error_Err_ (0x10a)

@implementation GoInterfacesError {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (BOOL)err:(NSError**)error {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_send(_GO_interfaces_Error_DESCRIPTOR_, _GO_interfaces_Error_Err_, &in_, &out_);
	NSString* _error = go_seq_readUTF8(&out_);
	if ([_error length] != 0 && error != nil) {
		NSMutableDictionary* details = [NSMutableDictionary dictionary];
		[details setValue:_error forKey:NSLocalizedDescriptionKey];
		*error = [NSError errorWithDomain:errDomain code:1 userInfo:details];
	}
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ([_error length] == 0);
}

@end

static void proxyGoInterfacesError(id obj, int code, GoSeq* in, GoSeq* out) {
	switch (code) {
	case _GO_interfaces_Error_Err_: {
		id<GoInterfacesError> o = (id<GoInterfacesError>)(obj);
		NSError* error = NULL;
		BOOL returnVal = [o err:&error];
		if (returnVal) {
			go_seq_writeUTF8(out, NULL);
		} else {
			NSString* errorDesc = [error localizedDescription];
			if (errorDesc == NULL || errorDesc.length == 0) {
				errorDesc = @"gobind: unknown error";
			}
			go_seq_writeUTF8(out, errorDesc);
		}
	} break;
	default:
		NSLog(@"unknown code %x for _GO_interfaces_Error_DESCRIPTOR_", code);
	}
}

#define _GO_interfaces_I_DESCRIPTOR_ "go.interfaces.I"
#define _GO_interfaces_I_Rand_ (0x10a)

@implementation GoInterfacesI {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (int32_t)rand {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_send(_GO_interfaces_I_DESCRIPTOR_, _GO_interfaces_I_Rand_, &in_, &out_);
	int32_t ret0_ = go_seq_readInt32(&out_);
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ret0_;
}

@end

static void proxyGoInterfacesI(id obj, int code, GoSeq* in, GoSeq* out) {
	switch (code) {
	case _GO_interfaces_I_Rand_: {
		id<GoInterfacesI> o = (id<GoInterfacesI>)(obj);
		int32_t returnVal = [o rand];
		go_seq_writeInt32(out, returnVal);
	} break;
	default:
		NSLog(@"unknown code %x for _GO_interfaces_I_DESCRIPTOR_", code);
	}
}

#define _GO_interfaces_I1_DESCRIPTOR_ "go.interfaces.I1"
#define _GO_interfaces_I1_J_ (0x10a)

@implementation GoInterfacesI1 {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (void)j {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_send(_GO_interfaces_I1_DESCRIPTOR_, _GO_interfaces_I1_J_, &in_, &out_);
	go_seq_free(&in_);
	go_seq_free(&out_);
}

@end


#define _GO_interfaces_I2_DESCRIPTOR_ "go.interfaces.I2"
#define _GO_interfaces_I2_G_ (0x10a)

@implementation GoInterfacesI2 {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (void)g {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_send(_GO_interfaces_I2_DESCRIPTOR_, _GO_interfaces_I2_G_, &in_, &out_);
	go_seq_free(&in_);
	go_seq_free(&out_);
}

@end


#define _GO_interfaces_I3_DESCRIPTOR_ "go.interfaces.I3"
#define _GO_interfaces_I3_F_ (0x10a)

@implementation GoInterfacesI3 {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (GoInterfacesI1*)f {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_send(_GO_interfaces_I3_DESCRIPTOR_, _GO_interfaces_I3_F_, &in_, &out_);
	GoSeqRef* ret0__ref = go_seq_readRef(&out_);
	GoInterfacesI1* ret0_ = ret0__ref.obj;
	if (ret0_ == NULL) {
		ret0_ = [[GoInterfacesI1 alloc] initWithRef:ret0__ref];
	}
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ret0_;
}

@end

static void proxyGoInterfacesI3(id obj, int code, GoSeq* in, GoSeq* out) {
	switch (code) {
	case _GO_interfaces_I3_F_: {
		id<GoInterfacesI3> o = (id<GoInterfacesI3>)(obj);
		GoInterfacesI1* returnVal = [o f];
		if ([(id<NSObject>)(returnVal) isKindOfClass:[GoInterfacesI1 class]]) {
			id<goSeqRefInterface>retVal_proxy = (id<goSeqRefInterface>)(returnVal);
			go_seq_writeRef(out, retVal_proxy._ref);
		} else {
			go_seq_writeRef(out, returnVal);
		}
	} break;
	default:
		NSLog(@"unknown code %x for _GO_interfaces_I3_DESCRIPTOR_", code);
	}
}

#define _GO_interfaces_WithParam_DESCRIPTOR_ "go.interfaces.WithParam"
#define _GO_interfaces_WithParam_HasParam_ (0x10a)

@implementation GoInterfacesWithParam {
}

- (id)initWithRef:(id)ref {
	self = [super init];
	if (self) { __ref = ref; }
	return self;
}

- (void)hasParam:(BOOL)p0 {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_writeRef(&in_, self._ref);
	go_seq_writeBool(&in_, p0);
	go_seq_send(_GO_interfaces_WithParam_DESCRIPTOR_, _GO_interfaces_WithParam_HasParam_, &in_, &out_);
	go_seq_free(&in_);
	go_seq_free(&out_);
}

@end

static void proxyGoInterfacesWithParam(id obj, int code, GoSeq* in, GoSeq* out) {
	switch (code) {
	case _GO_interfaces_WithParam_HasParam_: {
		id<GoInterfacesWithParam> o = (id<GoInterfacesWithParam>)(obj);
		BOOL p0 = go_seq_readBool(in);
		[o hasParam:p0];
	} break;
	default:
		NSLog(@"unknown code %x for _GO_interfaces_WithParam_DESCRIPTOR_", code);
	}
}

#define _CALL_Add3_ 1
#define _CALL_CallErr_ 2
#define _CALL_Seven_ 3

int32_t GoInterfacesAdd3(id<GoInterfacesI> r) {
	GoSeq in_ = {};
	GoSeq out_ = {};
	if ([(id<NSObject>)(r) isKindOfClass:[GoInterfacesI class]]) {
		id<goSeqRefInterface> r_proxy = (id<goSeqRefInterface>)(r);
		go_seq_writeRef(&in_, r_proxy._ref);
	} else {
		go_seq_writeObjcRef(&in_, r);
	}
	go_seq_send(_DESCRIPTOR_, _CALL_Add3_, &in_, &out_);
	int32_t ret0_ = go_seq_readInt32(&out_);
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ret0_;
}

BOOL GoInterfacesCallErr(id<GoInterfacesError> e, NSError** error) {
	GoSeq in_ = {};
	GoSeq out_ = {};
	if ([(id<NSObject>)(e) isKindOfClass:[GoInterfacesError class]]) {
		id<goSeqRefInterface> e_proxy = (id<goSeqRefInterface>)(e);
		go_seq_writeRef(&in_, e_proxy._ref);
	} else {
		go_seq_writeObjcRef(&in_, e);
	}
	go_seq_send(_DESCRIPTOR_, _CALL_CallErr_, &in_, &out_);
	NSString* _error = go_seq_readUTF8(&out_);
	if ([_error length] != 0 && error != nil) {
		NSMutableDictionary* details = [NSMutableDictionary dictionary];
		[details setValue:_error forKey:NSLocalizedDescriptionKey];
		*error = [NSError errorWithDomain:errDomain code:1 userInfo:details];
	}
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ([_error length] == 0);
}

id<GoInterfacesI> GoInterfacesSeven() {
	GoSeq in_ = {};
	GoSeq out_ = {};
	go_seq_send(_DESCRIPTOR_, _CALL_Seven_, &in_, &out_);
	GoSeqRef* ret0__ref = go_seq_readRef(&out_);
	id<GoInterfacesI> ret0_ = ret0__ref.obj;
	if (ret0_ == NULL) {
		ret0_ = [[GoInterfacesI alloc] initWithRef:ret0__ref];
	}
	go_seq_free(&in_);
	go_seq_free(&out_);
	return ret0_;
}

__attribute__((constructor)) static void init() {
	go_seq_register_proxy("go.interfaces.Error", proxyGoInterfacesError);
	go_seq_register_proxy("go.interfaces.I", proxyGoInterfacesI);
	go_seq_register_proxy("go.interfaces.I3", proxyGoInterfacesI3);
	go_seq_register_proxy("go.interfaces.WithParam", proxyGoInterfacesWithParam);
}
