mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Add Java overloads for each default argument (#11940)
* Add Java overloads for each default argument * Add "fisheye_" prefix for cv::fisheye:: functions and enums
This commit is contained in:
parent
540415dc5e
commit
f38808a39f
@ -18,6 +18,9 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"namespaces_dict": {
|
||||||
|
"cv.fisheye": "fisheye"
|
||||||
|
},
|
||||||
"func_arg_fix" : {
|
"func_arg_fix" : {
|
||||||
"findFundamentalMat" : { "points1" : {"ctype" : "vector_Point2f"},
|
"findFundamentalMat" : { "points1" : {"ctype" : "vector_Point2f"},
|
||||||
"points2" : {"ctype" : "vector_Point2f"} },
|
"points2" : {"ctype" : "vector_Point2f"} },
|
||||||
|
@ -67,6 +67,10 @@ type_dict = {
|
|||||||
"double[]": { "j_type" : "double[]", "jn_type" : "double[]", "jni_type" : "jdoubleArray", "suffix" : "_3D" }
|
"double[]": { "j_type" : "double[]", "jn_type" : "double[]", "jni_type" : "jdoubleArray", "suffix" : "_3D" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Defines a rule to add extra prefixes for names from specific namespaces.
|
||||||
|
# In example, cv::fisheye::stereoRectify from namespace fisheye is wrapped as fisheye_stereoRectify
|
||||||
|
namespaces_dict = {}
|
||||||
|
|
||||||
# { class : { func : {j_code, jn_code, cpp_code} } }
|
# { class : { func : {j_code, jn_code, cpp_code} } }
|
||||||
ManualFuncs = {}
|
ManualFuncs = {}
|
||||||
|
|
||||||
@ -148,6 +152,8 @@ class ConstInfo(GeneralInfo):
|
|||||||
self.cname = self.name.replace(".", "::")
|
self.cname = self.name.replace(".", "::")
|
||||||
self.value = decl[1]
|
self.value = decl[1]
|
||||||
self.addedManually = addedManually
|
self.addedManually = addedManually
|
||||||
|
if self.namespace in namespaces_dict:
|
||||||
|
self.name = '%s_%s' % (namespaces_dict[self.namespace], self.name)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return Template("CONST $name=$value$manual").substitute(name=self.name,
|
return Template("CONST $name=$value$manual").substitute(name=self.name,
|
||||||
@ -297,11 +303,13 @@ class ArgInfo():
|
|||||||
class FuncInfo(GeneralInfo):
|
class FuncInfo(GeneralInfo):
|
||||||
def __init__(self, decl, namespaces=[]): # [ funcname, return_ctype, [modifiers], [args] ]
|
def __init__(self, decl, namespaces=[]): # [ funcname, return_ctype, [modifiers], [args] ]
|
||||||
GeneralInfo.__init__(self, "func", decl, namespaces)
|
GeneralInfo.__init__(self, "func", decl, namespaces)
|
||||||
self.cname = self.name.replace(".", "::")
|
self.cname = decl[0].replace(".", "::")
|
||||||
self.jname = self.name
|
self.jname = self.name
|
||||||
self.isconstructor = self.name == self.classname
|
self.isconstructor = self.name == self.classname
|
||||||
if "[" in self.name:
|
if "[" in self.name:
|
||||||
self.jname = "getelem"
|
self.jname = "getelem"
|
||||||
|
if self.namespace in namespaces_dict:
|
||||||
|
self.jname = '%s_%s' % (namespaces_dict[self.namespace], self.jname)
|
||||||
for m in decl[2]:
|
for m in decl[2]:
|
||||||
if m.startswith("="):
|
if m.startswith("="):
|
||||||
self.jname = m[1:]
|
self.jname = m[1:]
|
||||||
@ -688,9 +696,9 @@ class JavaWrapperGenerator(object):
|
|||||||
# java part:
|
# java part:
|
||||||
|
|
||||||
#java doc comment
|
#java doc comment
|
||||||
f_name = fi.name
|
f_name = fi.jname
|
||||||
if fi.classname:
|
if fi.classname:
|
||||||
f_name = fi.classname + "::" + fi.name
|
f_name = fi.classname + "::" + fi.jname
|
||||||
java_doc = "//javadoc: " + f_name + "(%s)" % ", ".join([a.name for a in args if a.ctype])
|
java_doc = "//javadoc: " + f_name + "(%s)" % ", ".join([a.name for a in args if a.ctype])
|
||||||
j_code.write(" "*4 + java_doc + "\n")
|
j_code.write(" "*4 + java_doc + "\n")
|
||||||
|
|
||||||
@ -897,13 +905,10 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|||||||
j_signatures.append(j_signature)
|
j_signatures.append(j_signature)
|
||||||
|
|
||||||
# processing args with default values
|
# processing args with default values
|
||||||
if not args or not args[-1].defval:
|
if args and args[-1].defval:
|
||||||
|
args.pop()
|
||||||
|
else:
|
||||||
break
|
break
|
||||||
while args and args[-1].defval:
|
|
||||||
# 'smart' overloads filtering
|
|
||||||
a = args.pop()
|
|
||||||
if a.name in ('mask', 'dtype', 'ddepth', 'lineType', 'borderType', 'borderMode', 'criteria'):
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1146,6 +1151,7 @@ if __name__ == "__main__":
|
|||||||
type_dict.update(gen_type_dict.get("type_dict", {}))
|
type_dict.update(gen_type_dict.get("type_dict", {}))
|
||||||
ManualFuncs.update(gen_type_dict.get("ManualFuncs", {}))
|
ManualFuncs.update(gen_type_dict.get("ManualFuncs", {}))
|
||||||
func_arg_fix.update(gen_type_dict.get("func_arg_fix", {}))
|
func_arg_fix.update(gen_type_dict.get("func_arg_fix", {}))
|
||||||
|
namespaces_dict.update(gen_type_dict.get("namespaces_dict", {}))
|
||||||
if 'module_j_code' in gen_type_dict:
|
if 'module_j_code' in gen_type_dict:
|
||||||
module_j_code = read_contents(checkFileRemap(os.path.join(misc_location, gen_type_dict['module_j_code'])))
|
module_j_code = read_contents(checkFileRemap(os.path.join(misc_location, gen_type_dict['module_j_code'])))
|
||||||
if 'module_jn_code' in gen_type_dict:
|
if 'module_jn_code' in gen_type_dict:
|
||||||
|
Loading…
Reference in New Issue
Block a user