The are three generators that currently call this method: A -> B (1) go -> java (2) go -> objective-c (3) go -> go As discussed below, we only substitute for invalid unicode characters in case (1). **Case 1** Go: From golang.org/ref/spec: Identifiers name program entities such as variables and types. An identifier is a sequence of one or more letters and digits(unicode_digit). The first character in an identifier must be a letter(unicode_letter | "_" ). Java: From https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8 `The "Java letters" include uppercase and lowercase ASCII Latin letters A-Z (\u0041-\u005a), and a-z (\u0061-\u007a), and, for historical reasons, the ASCII underscore (_, or \u005f) and dollar sign ($, or \u0024). The $ character should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.` Therefore, Go's identifiers are checked in case they break these Java rules. **Case 2** There is no objective-c standard specification for valid identifiers. From some testing it seems that Go and objective-c have identical valid identifier rules. **Case 3** Requires no checking. Change-Id: I881810eb9355af6a418727ace32cb6ce4266b2a0 Reviewed-on: https://go-review.googlesource.com/14044 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
97 lines
2.4 KiB
Plaintext
97 lines
2.4 KiB
Plaintext
// Objective-C API for talking to issue10788 Go package.
|
|
// gobind -lang=objc issue10788
|
|
//
|
|
// File is generated by gobind. Do not edit.
|
|
|
|
#include <Foundation/Foundation.h>
|
|
#include "seq.h"
|
|
#include "_cgo_export.h"
|
|
#include "GoIssue10788.h"
|
|
|
|
|
|
@implementation GoIssue10788TestStruct {
|
|
}
|
|
|
|
- (id)initWithRef:(id)ref {
|
|
self = [super init];
|
|
if (self) { __ref = ref; }
|
|
return self;
|
|
}
|
|
|
|
- (NSString*)value {
|
|
int32_t refnum = go_seq_go_to_refnum(self._ref);
|
|
nstring r0 = proxyissue10788_TestStruct_Value_Get(refnum);
|
|
NSString *_r0 = go_seq_to_objc_string(r0);
|
|
return _r0;
|
|
}
|
|
|
|
- (void)setValue:(NSString*)v {
|
|
int32_t refnum = go_seq_go_to_refnum(self._ref);
|
|
nstring _v = go_seq_from_objc_string(v);
|
|
proxyissue10788_TestStruct_Value_Set(refnum, _v);
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation GoIssue10788TestInterface {
|
|
}
|
|
|
|
- (instancetype)initWithRef:(id)ref {
|
|
self = [super init];
|
|
if (self) { __ref = ref; }
|
|
return self;
|
|
}
|
|
|
|
- (void)doSomeWork:(GoIssue10788TestStruct*)s {
|
|
int32_t refnum = go_seq_go_to_refnum(self._ref);
|
|
int32_t _s;
|
|
if ([(id<NSObject>)(s) isKindOfClass:[GoIssue10788TestStruct class]]) {
|
|
id<goSeqRefInterface> s_proxy = (id<goSeqRefInterface>)(s);
|
|
_s = go_seq_go_to_refnum(s_proxy._ref);
|
|
} else {
|
|
_s = go_seq_to_refnum(s);
|
|
}
|
|
proxyissue10788_TestInterface_DoSomeWork(refnum, _s);
|
|
}
|
|
|
|
- (void)multipleUnnamedParams:(long)p0 p1:(NSString*)p1 日本:(int64_t)日本 {
|
|
int32_t refnum = go_seq_go_to_refnum(self._ref);
|
|
nint _p0 = (nint)p0;
|
|
nstring _p1 = go_seq_from_objc_string(p1);
|
|
int64_t _日本 = (int64_t)日本;
|
|
proxyissue10788_TestInterface_MultipleUnnamedParams(refnum, _p0, _p1, _日本);
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
|
|
void cproxyissue10788_TestInterface_DoSomeWork(int32_t refnum, int32_t s) {
|
|
@autoreleasepool {
|
|
GoIssue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
|
|
GoIssue10788TestStruct* _s = nil;
|
|
GoSeqRef* _s_ref = go_seq_from_refnum(s);
|
|
if (_s_ref != NULL) {
|
|
_s = _s_ref.obj;
|
|
if (_s == nil) {
|
|
_s = [[GoIssue10788TestStruct alloc] initWithRef:_s_ref];
|
|
}
|
|
}
|
|
[o doSomeWork:_s];
|
|
}
|
|
}
|
|
|
|
void cproxyissue10788_TestInterface_MultipleUnnamedParams(int32_t refnum, nint p0, nstring p1, int64_t 日本) {
|
|
@autoreleasepool {
|
|
GoIssue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
|
|
long _p0 = (long)p0;
|
|
NSString *_p1 = go_seq_to_objc_string(p1);
|
|
int64_t _日本 = (int64_t)日本;
|
|
[o multipleUnnamedParams:_p0 p1:_p1 日本:_日本];
|
|
}
|
|
}
|
|
|
|
__attribute__((constructor)) static void init() {
|
|
init_seq();
|
|
}
|