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

Method genJNIVar

bind/genjava.go:1092–1118  ·  view source on GitHub ↗
(o *types.Var)

Source from the content-addressed store, hash-verified

1090}
1091
1092func (g *JavaGen) genJNIVar(o *types.Var) {
1093 if t := o.Type(); !g.isSupported(t) {
1094 g.Printf("// skipped variable %s with unsupported type: %s\n\n", o.Name(), t)
1095 return
1096 }
1097 n := java.JNIMangle(g.javaTypeName(o.Name()))
1098 // setter
1099 g.Printf("JNIEXPORT void JNICALL\n")
1100 g.Printf("Java_%s_%s_set%s(JNIEnv *env, jclass clazz, %s v) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n, g.jniType(o.Type()))
1101 g.Indent()
1102 g.genJavaToC("v", o.Type(), modeRetained)
1103 g.Printf("var_set%s_%s(_v);\n", g.pkgPrefix, o.Name())
1104 g.genRelease("v", o.Type(), modeRetained)
1105 g.Outdent()
1106 g.Printf("}\n\n")
1107
1108 // getter
1109 g.Printf("JNIEXPORT %s JNICALL\n", g.jniType(o.Type()))
1110 g.Printf("Java_%s_%s_get%s(JNIEnv *env, jclass clazz) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n)
1111 g.Indent()
1112 g.Printf("%s r0 = ", g.cgoType(o.Type()))
1113 g.Printf("var_get%s_%s();\n", g.pkgPrefix, o.Name())
1114 g.genCToJava("_r0", "r0", o.Type(), modeRetained)
1115 g.Printf("return _r0;\n")
1116 g.Outdent()
1117 g.Printf("}\n\n")
1118}
1119
1120func (g *JavaGen) genJNIConstructor(f *types.Func, sName string) {
1121 if !g.isConsSigSupported(f.Type()) {

Callers 1

GenCMethod · 0.95

Calls 14

javaTypeNameMethod · 0.95
jniPkgNameMethod · 0.95
classNameMethod · 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

Tested by

no test coverage detected