|
|
|
@@ -116,6 +116,15 @@ def mkdir_p(path):
|
|
|
|
|
else:
|
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
def make_jname(m):
|
|
|
|
|
return "Cv"+m if (m[0] in "0123456789") else m
|
|
|
|
|
|
|
|
|
|
def make_jmodule(m):
|
|
|
|
|
return "cv"+m if (m[0] in "0123456789") else m
|
|
|
|
|
|
|
|
|
|
def make_namespace(ci):
|
|
|
|
|
return ('using namespace ' + ci.namespace.replace('.', '::') + ';') if ci.namespace and ci.namespace != 'cv' else ''
|
|
|
|
|
|
|
|
|
|
T_JAVA_START_INHERITED = read_contents(os.path.join(SCRIPT_DIR, 'templates/java_class_inherited.prolog'))
|
|
|
|
|
T_JAVA_START_ORPHAN = read_contents(os.path.join(SCRIPT_DIR, 'templates/java_class.prolog'))
|
|
|
|
|
T_JAVA_START_MODULE = read_contents(os.path.join(SCRIPT_DIR, 'templates/java_module.prolog'))
|
|
|
|
@@ -270,6 +279,7 @@ class ClassInfo(GeneralInfo):
|
|
|
|
|
self.name = '%s_%s' % (prefix, self.name)
|
|
|
|
|
self.jname = '%s_%s' % (prefix, self.jname)
|
|
|
|
|
|
|
|
|
|
self.jname = make_jname(self.jname)
|
|
|
|
|
self.base = ''
|
|
|
|
|
if decl[1]:
|
|
|
|
|
# FIXIT Use generator to find type properly instead of hacks below
|
|
|
|
@@ -354,6 +364,7 @@ class ClassInfo(GeneralInfo):
|
|
|
|
|
return Template(self.j_code.getvalue() + "\n\n" +
|
|
|
|
|
self.jn_code.getvalue() + "\n}\n").substitute(
|
|
|
|
|
module = m,
|
|
|
|
|
jmodule = make_jmodule(m),
|
|
|
|
|
name = self.name,
|
|
|
|
|
jname = self.jname,
|
|
|
|
|
imports = "\n".join(self.getAllImports(M)),
|
|
|
|
@@ -414,6 +425,7 @@ class FuncInfo(GeneralInfo):
|
|
|
|
|
else:
|
|
|
|
|
self.jname = '%s_%s' % (prefix, self.jname)
|
|
|
|
|
|
|
|
|
|
self.jname = make_jname(self.jname)
|
|
|
|
|
self.static = ["","static"][ "/S" in decl[2] ]
|
|
|
|
|
self.ctype = re.sub(r"^CvTermCriteria", "TermCriteria", decl[1] or "")
|
|
|
|
|
self.args = []
|
|
|
|
@@ -611,7 +623,8 @@ class JavaWrapperGenerator(object):
|
|
|
|
|
|
|
|
|
|
logging.info("\n\n===== Generating... =====")
|
|
|
|
|
moduleCppCode = StringIO()
|
|
|
|
|
package_path = os.path.join(output_java_path, module)
|
|
|
|
|
package_path = os.path.join(output_java_path, make_jmodule(module))
|
|
|
|
|
#print("package path: %s\n" % package_path)
|
|
|
|
|
mkdir_p(package_path)
|
|
|
|
|
for ci in sorted(self.classes.values(), key=lambda x: x.symbol_id):
|
|
|
|
|
if ci.name == "Mat":
|
|
|
|
@@ -619,7 +632,7 @@ class JavaWrapperGenerator(object):
|
|
|
|
|
ci.initCodeStreams(self.Module)
|
|
|
|
|
self.gen_class(ci)
|
|
|
|
|
classJavaCode = ci.generateJavaCode(self.module, self.Module)
|
|
|
|
|
self.save("%s/%s/%s.java" % (output_java_path, module, ci.jname), classJavaCode)
|
|
|
|
|
self.save("%s/%s.java" % (package_path, ci.jname), classJavaCode)
|
|
|
|
|
moduleCppCode.write(ci.generateCppCode())
|
|
|
|
|
ci.cleanupCodeStreams()
|
|
|
|
|
cpp_file = os.path.abspath(os.path.join(output_jni_path, module + ".inl.hpp"))
|
|
|
|
@@ -1040,13 +1053,13 @@ class JavaWrapperGenerator(object):
|
|
|
|
|
clazz = ci.jname
|
|
|
|
|
cpp_code.write ( Template(
|
|
|
|
|
"""
|
|
|
|
|
JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname ($argst);
|
|
|
|
|
JNIEXPORT $rtype JNICALL Java_org_opencv_${jmodule}_${clazz}_$fname ($argst);
|
|
|
|
|
|
|
|
|
|
JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|
|
|
|
JNIEXPORT $rtype JNICALL Java_org_opencv_${jmodule}_${clazz}_$fname
|
|
|
|
|
($args)
|
|
|
|
|
{
|
|
|
|
|
${namespace}
|
|
|
|
|
static const char method_name[] = "$module::$fname()";
|
|
|
|
|
static const char method_name[] = "$jmodule::$fname()";
|
|
|
|
|
try {
|
|
|
|
|
LOGD("%s", method_name);$prologue
|
|
|
|
|
$retval$cvname($cvargs);$epilogue$ret
|
|
|
|
@@ -1061,6 +1074,7 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|
|
|
|
""" ).substitute(
|
|
|
|
|
rtype = rtype,
|
|
|
|
|
module = self.module.replace('_', '_1'),
|
|
|
|
|
jmodule = make_jmodule(self.module.replace('_', '_1')),
|
|
|
|
|
clazz = clazz.replace('_', '_1'),
|
|
|
|
|
fname = (fi.jname + '_' + str(suffix_counter)).replace('_', '_1'),
|
|
|
|
|
args = ", ".join(["%s %s" % (type_dict[a.ctype].get("jni_type"), a.name) for a in jni_args]),
|
|
|
|
@@ -1072,7 +1086,7 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|
|
|
|
cvargs = " " + ", ".join(cvargs) + " " if cvargs else "",
|
|
|
|
|
default = "\n " + default if default else "",
|
|
|
|
|
retval = retval,
|
|
|
|
|
namespace = ('using namespace ' + ci.namespace.replace('.', '::') + ';') if ci.namespace and ci.namespace != 'cv' else ''
|
|
|
|
|
namespace = make_namespace(ci)
|
|
|
|
|
) )
|
|
|
|
|
|
|
|
|
|
# adding method signature to dictionary
|
|
|
|
|