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

#include <Foundation/Foundation.h>
#include "seq.h"
#include "_cgo_export.h"
#include "Ignore.objc.h"


@implementation IgnoreS {
}

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

- (instancetype)init {
	self = [super init];
	if (self) {
		__ref = go_seq_from_refnum(new_ignore_S());
	}
	return self;
}

// skipped unsupported field F with type interface{}

// skipped method S.Argument with unsupported parameter or return types

// skipped method S.Result with unsupported parameter or return types

@end


@implementation IgnoreI {
}

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

// skipped method I.Argument with unsupported parameter or return types

// skipped method I.Result with unsupported parameter or return types

@end


// skipped const Cuint with unsupported type: uint

// skipped const Cuint32 with unsupported type: uint32

// skipped const Cuint64 with unsupported type: uint64

// skipped const NamedConst with unsupported type: ignore.NamedString


@implementation Ignore
// skipped variable C128 with unsupported type: complex128

// skipped variable C64 with unsupported type: complex64

// skipped variable Uint with unsupported type: uint

// skipped variable Uint32 with unsupported type: uint32

// skipped variable Uint64 with unsupported type: uint64

// skipped variable V with unsupported type: interface{}

// skipped variable Var with unsupported type: interface{}

@end


// skipped function Argument with unsupported parameter or return types

// skipped function Result with unsupported parameter or return types

// skipped method I.Argument with unsupported parameter or return types

// skipped method I.Result with unsupported parameter or return types

__attribute__((constructor)) static void init() {
	init_seq();
}
