// 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;
@property (nonatomic) NSString* underscore_field;
@end

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

@end

FOUNDATION_EXPORT void Underscore_pkgUnderscore_func(void);

#endif
