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

Method genJNIField

bind/genjava.go:1062–1090  ·  view source on GitHub ↗
(o *types.TypeName, f *types.Var)

Source from the content-addressed store, hash-verified

1060}
1061
1062func (g *JavaGen) genJNIField(o *types.TypeName, f *types.Var) {
1063 if t := f.Type(); !g.isSupported(t) {
1064 g.Printf("// skipped field %s with unsupported type: %s\n\n", o.Name(), t)
1065 return
1066 }
1067 n := java.JNIMangle(g.javaTypeName(o.Name()))
1068 // setter
1069 g.Printf("JNIEXPORT void JNICALL\n")
1070 g.Printf("Java_%s_%s_set%s(JNIEnv *env, jobject this, %s v) {\n", g.jniPkgName(), n, java.JNIMangle(f.Name()), g.jniType(f.Type()))
1071 g.Indent()
1072 g.Printf("int32_t o = go_seq_to_refnum_go(env, this);\n")
1073 g.genJavaToC("v", f.Type(), modeRetained)
1074 g.Printf("proxy%s_%s_%s_Set(o, _v);\n", g.pkgPrefix, o.Name(), f.Name())
1075 g.genRelease("v", f.Type(), modeRetained)
1076 g.Outdent()
1077 g.Printf("}\n\n")
1078
1079 // getter
1080 g.Printf("JNIEXPORT %s JNICALL\n", g.jniType(f.Type()))
1081 g.Printf("Java_%s_%s_get%s(JNIEnv *env, jobject this) {\n", g.jniPkgName(), n, java.JNIMangle(f.Name()))
1082 g.Indent()
1083 g.Printf("int32_t o = go_seq_to_refnum_go(env, this);\n")
1084 g.Printf("%s r0 = ", g.cgoType(f.Type()))
1085 g.Printf("proxy%s_%s_%s_Get(o);\n", g.pkgPrefix, o.Name(), f.Name())
1086 g.genCToJava("_r0", "r0", f.Type(), modeRetained)
1087 g.Printf("return _r0;\n")
1088 g.Outdent()
1089 g.Printf("}\n\n")
1090}
1091
1092func (g *JavaGen) genJNIVar(o *types.Var) {
1093 if t := o.Type(); !g.isSupported(t) {

Callers 1

GenCMethod · 0.95

Calls 13

javaTypeNameMethod · 0.95
jniPkgNameMethod · 0.95
jniTypeMethod · 0.95
genJavaToCMethod · 0.95
genReleaseMethod · 0.95
genCToJavaMethod · 0.95
JNIMangleFunction · 0.92
TypeMethod · 0.80
PrintfMethod · 0.80
IndentMethod · 0.80
OutdentMethod · 0.80
isSupportedMethod · 0.45

Tested by

no test coverage detected