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

#ifndef __Underscore_pkg_H__
#define __Underscore_pkg_H__

@import Foundation;
#include "Universe.objc.h"


@class Underscore_pkgUnderscore_struct;

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

- (instancetype)initWithRef:(id)ref;
- (instancetype)init;
- (NSString*)underscore_field;
- (void)setUnderscore_field:(NSString*)v;
@end

@interface Underscore_pkg : NSObject
+ (long) underscore_var;
+ (void) setUnderscore_var:(long)v;

@end

FOUNDATION_EXPORT void Underscore_pkgUnderscore_func(void);

#endif
