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

Method genJavaToC

bind/genjava.go:896–923  ·  view source on GitHub ↗
(varName string, t types.Type, mode varMode)

Source from the content-addressed store, hash-verified

894}
895
896func (g *JavaGen) genJavaToC(varName string, t types.Type, mode varMode) {
897 switch t := types.Unalias(t).(type) {
898 case *types.Basic:
899 switch t.Kind() {
900 case types.String:
901 g.Printf("nstring _%s = go_seq_from_java_string(env, %s);\n", varName, varName)
902 default:
903 g.Printf("%s _%s = (%s)%s;\n", g.cgoType(t), varName, g.cgoType(t), varName)
904 }
905 case *types.Slice:
906 if isBytesSlice(t) {
907 g.Printf("nbyteslice _%s = go_seq_from_java_bytearray(env, %s, %d);\n", varName, varName, toCFlag(mode == modeRetained))
908 return
909 }
910 g.errorf("unsupported type: %s", t)
911 case *types.Named:
912 switch u := t.Underlying().(type) {
913 case *types.Interface:
914 g.Printf("int32_t _%s = go_seq_to_refnum(env, %s);\n", varName, varName)
915 default:
916 g.errorf("unsupported named type: %s / %T", u, u)
917 }
918 case *types.Pointer:
919 g.Printf("int32_t _%s = go_seq_to_refnum(env, %s);\n", varName, varName)
920 default:
921 g.Printf("%s _%s = (%s)%s;\n", g.cgoType(t), varName, g.cgoType(t), varName)
922 }
923}
924
925func (g *JavaGen) genCToJava(toName, fromName string, t types.Type, mode varMode) {
926 switch t := types.Unalias(t).(type) {

Callers 5

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

Calls 5

isBytesSliceFunction · 0.85
toCFlagFunction · 0.85
PrintfMethod · 0.80
cgoTypeMethod · 0.45
errorfMethod · 0.45

Tested by

no test coverage detected