2
0
mirror of synced 2025-02-23 06:48:15 +00:00
mobile/bind/testdata/interfaces.java.golden
Hyang-Ah Hana Kim 2b3c96656c cmd/gobind: implement interface method binding.
This change makes gobind to generate proper Go-side proxy code to
handle interface methods that have parameters and return values.

It allows gobind to accept struct pointer types as parameters
or a return value of a method.

Fixes golang/go#9487, golang/go#9488.

Change-Id: Id243c42ee0701d40e3871e392140368c2f8f9bc6
Reviewed-on: https://go-review.googlesource.com/2348
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-01-07 18:26:42 +00:00

88 lines
2.6 KiB
Plaintext

// Java Package interfaces is a proxy for talking to a Go program.
// gobind -lang=java interfaces
//
// File is generated by gobind. Do not edit.
package go.interfaces;
import go.Seq;
public abstract class Interfaces {
private Interfaces() {} // uninstantiable
public static int Add3(I r) {
go.Seq _in = new go.Seq();
go.Seq _out = new go.Seq();
int _result;
_in.writeRef(r.ref());
Seq.send(DESCRIPTOR, CALL_Add3, _in, _out);
_result = _out.readInt32();
return _result;
}
public interface I extends go.Seq.Object {
public int Rand();
public static abstract class Stub implements I {
static final String DESCRIPTOR = "go.interfaces.I";
private final go.Seq.Ref ref;
public Stub() {
ref = go.Seq.createRef(this);
}
public go.Seq.Ref ref() { return ref; }
public void call(int code, go.Seq in, go.Seq out) {
switch (code) {
case Proxy.CALL_Rand: {
int result = this.Rand();
out.writeInt32(result);
return;
}
default:
throw new RuntimeException("unknown code: "+ code);
}
}
}
static final class Proxy implements I {
static final String DESCRIPTOR = Stub.DESCRIPTOR;
private go.Seq.Ref ref;
Proxy(go.Seq.Ref ref) { this.ref = ref; }
public go.Seq.Ref ref() { return ref; }
public void call(int code, go.Seq in, go.Seq out) {
throw new RuntimeException("cycle: cannot call proxy");
}
public int Rand() {
go.Seq _in = new go.Seq();
go.Seq _out = new go.Seq();
int _result;
_in.writeRef(ref);
Seq.send(DESCRIPTOR, CALL_Rand, _in, _out);
_result = _out.readInt32();
return _result;
}
static final int CALL_Rand = 0x10a;
}
}
public static I Seven() {
go.Seq _in = new go.Seq();
go.Seq _out = new go.Seq();
I _result;
Seq.send(DESCRIPTOR, CALL_Seven, _in, _out);
_result = new I.Proxy(_out.readRef());
return _result;
}
private static final int CALL_Add3 = 1;
private static final int CALL_Seven = 2;
private static final String DESCRIPTOR = "interfaces";
}