// 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__

#include <Foundation/Foundation.h>

@class GoStructsS;

@interface GoStructsS : NSObject {
}
@property(strong, readonly) id ref;

- (id)initWithRef:(id)ref;
- (double)X;
- (void)setX:(double)v;
- (double)Y;
- (void)setY:(double)v;
- (BOOL)Identity:(GoStructsS**)ret0_ error:(NSError**)error;
- (double)Sum;
@end

FOUNDATION_EXPORT GoStructsS* GoStructsIdentity(GoStructsS* s);

FOUNDATION_EXPORT BOOL GoStructsIdentityWithError(GoStructsS* s, GoStructsS** ret0_, NSError** error);

#endif
