(o *types.Var)
| 1090 | } |
| 1091 | |
| 1092 | func (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 | |
| 1120 | func (g *JavaGen) genJNIConstructor(f *types.Func, sName string) { |
| 1121 | if !g.isConsSigSupported(f.Type()) { |
no test coverage detected