) );\r
\r
# java part:\r
+\r
+ #java doc comment\r
+ f_name = fi.name\r
+ if fi.classname:\r
+ f_name = fi.classname + "::" + fi.name\r
+ self.java_code.write(indent + "//javadoc: " + f_name + "(%s)\n" % \\r
+ ", ".join([a.name for a in args])\r
+ )\r
+\r
# public java wrapper method impl (calling native one above)\r
# e.g.\r
# public static void add( Mat src1, Mat src2, Mat dst, Mat mask, int dtype )\r
for fi in ffi.funcs:\r
self.gen_func(fi, len(ffi.funcs)>1, jn_code)\r
\r
- self.java_code.write("\n\n" + indent_m + "// native stuff\n")\r
- self.java_code.write( indent_m + "//\n" + jn_code.getvalue() )\r
- self.java_code.write( "\n\n" + indent + "}\n\n" )\r
+ # finalize()\r
+ self.java_code.write(\r
+"""\r
+ @Override\r
+ protected void finalize() throws Throwable {\r
+ n_delete(nativeObj);\r
+ super.finalize();\r
+ }\r
+\r
+"""\r
+ )\r
+\r
+ self.java_code.write(indent_m + "// native stuff\n\n")\r
+ self.java_code.write( jn_code.getvalue() )\r
+ self.java_code.write(\r
+"""\r
+ // native support for java finalize()\r
+ private static native void n_delete(long nativeObj);\r
+"""\r
+ )\r
+ self.java_code.write("\n" + indent + "}\n\n")\r
+\r
+ # native support for java finalize()\r
+ self.cpp_code.write( \\r
+"""\r
+//\r
+// native support for java finalize()\r
+// static void %(cls)s::n_delete( __int64 self )\r
+//\r
+\r
+JNIEXPORT void JNICALL Java_org_opencv_%(module)s_00024%(cls)s_n_1delete\r
+ (JNIEnv* env, jclass cls, jlong self)\r
+{\r
+ delete (%(cls)s*) self;\r
+}\r
+\r
+""" % {"module" : module, "cls" : name}\r
+ )\r
\r
\r
if __name__ == "__main__":\r