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

#ifndef __GoVars_H__
#define __GoVars_H__

#include <Foundation/Foundation.h>

@class GoVarsS;

@protocol GoVarsI
@end

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

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

FOUNDATION_EXPORT void GoVars_setABool(BOOL v);
FOUNDATION_EXPORT BOOL GoVarsABool();

FOUNDATION_EXPORT void GoVars_setAFloat(double v);
FOUNDATION_EXPORT double GoVarsAFloat();

FOUNDATION_EXPORT void GoVars_setAFloat32(float v);
FOUNDATION_EXPORT float GoVarsAFloat32();

FOUNDATION_EXPORT void GoVars_setAFloat64(double v);
FOUNDATION_EXPORT double GoVarsAFloat64();

FOUNDATION_EXPORT void GoVars_setAString(NSString* v);
FOUNDATION_EXPORT NSString* GoVarsAString();

FOUNDATION_EXPORT void GoVars_setAStructPtr(GoVarsS* v);
FOUNDATION_EXPORT GoVarsS* GoVarsAStructPtr();

FOUNDATION_EXPORT void GoVars_setAnInt(int v);
FOUNDATION_EXPORT int GoVarsAnInt();

FOUNDATION_EXPORT void GoVars_setAnInt16(int16_t v);
FOUNDATION_EXPORT int16_t GoVarsAnInt16();

FOUNDATION_EXPORT void GoVars_setAnInt32(int32_t v);
FOUNDATION_EXPORT int32_t GoVarsAnInt32();

FOUNDATION_EXPORT void GoVars_setAnInt64(int64_t v);
FOUNDATION_EXPORT int64_t GoVarsAnInt64();

FOUNDATION_EXPORT void GoVars_setAnInt8(int8_t v);
FOUNDATION_EXPORT int8_t GoVarsAnInt8();

FOUNDATION_EXPORT void GoVars_setAnInterface(id<GoVarsI> v);
FOUNDATION_EXPORT id<GoVarsI> GoVarsAnInterface();

#endif
