MCPcopy Create free account
hub / github.com/golang/mobile / genCToJava

Method genCToJava

bind/genjava.go:925–961  ·  view source on GitHub ↗
(toName, fromName string, t types.Type, mode varMode)

Source from the content-addressed store, hash-verified

923}
924
925func (g *JavaGen) genCToJava(toName, fromName string, t types.Type, mode varMode) {
926 switch t := types.Unalias(t).(type) {
927 case *types.Basic:
928 switch t.Kind() {
929 case types.String:
930 g.Printf("jstring %s = go_seq_to_java_string(env, %s);\n", toName, fromName)
931 case types.Bool:
932 g.Printf("jboolean %s = %s ? JNI_TRUE : JNI_FALSE;\n", toName, fromName)
933 default:
934 g.Printf("%s %s = (%s)%s;\n", g.jniType(t), toName, g.jniType(t), fromName)
935 }
936 case *types.Slice:
937 if isBytesSlice(t) {
938 g.Printf("jbyteArray %s = go_seq_to_java_bytearray(env, %s, %d);\n", toName, fromName, toCFlag(mode == modeRetained))
939 return
940 }
941 g.errorf("unsupported type: %s", t)
942 case *types.Pointer:
943 // TODO(crawshaw): test *int
944 // TODO(crawshaw): test **Generator
945 switch t := types.Unalias(t.Elem()).(type) {
946 case *types.Named:
947 g.genFromRefnum(toName, fromName, t, t.Obj())
948 default:
949 g.errorf("unsupported type %s", t)
950 }
951 case *types.Named:
952 switch t.Underlying().(type) {
953 case *types.Interface, *types.Pointer:
954 g.genFromRefnum(toName, fromName, t, t.Obj())
955 default:
956 g.errorf("unsupported, direct named type %s", t)
957 }
958 default:
959 g.Printf("%s %s = (%s)%s;\n", g.jniType(t), toName, g.jniType(t), fromName)
960 }
961}
962
963func (g *JavaGen) genFromRefnum(toName, fromName string, t types.Type, o *types.TypeName) {
964 oPkg := o.Pkg()

Callers 5

genJNIFieldMethod · 0.95
genJNIVarMethod · 0.95
genJNIConstructorMethod · 0.95
genJNIFuncBodyMethod · 0.95

Calls 6

jniTypeMethod · 0.95
genFromRefnumMethod · 0.95
isBytesSliceFunction · 0.85
toCFlagFunction · 0.85
PrintfMethod · 0.80
errorfMethod · 0.45

Tested by

no test coverage detected