From bba5653bf0d7ebfeaabc75dfa44d3d975d5b7415 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Fri, 22 Jul 2011 04:54:19 +0000 Subject: [PATCH] Added option to automatically move constants to private list --- modules/java/gen_java.py | 41 ++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/modules/java/gen_java.py b/modules/java/gen_java.py index 93d341d81..854bf141d 100644 --- a/modules/java/gen_java.py +++ b/modules/java/gen_java.py @@ -86,6 +86,16 @@ const_ignore_list = ( "CV_YUV420i2.+", "CV_TM_.+", "CV_FLOODFILL_.+", + "CV_ADAPTIVE_THRESH_.+", +) + +const_private_list = ( + "CV_MOP_.+", + "CV_INTER_.+", + "CV_THRESH_.+", + "CV_INPAINT_.+", + "CV_RETR_.+", + "CV_CHAIN_APPROX_.+", ) # { Module : { public : [[name, val],...], private : [[]...] } } @@ -118,7 +128,7 @@ missing_consts = \ "Calib3d": { - 'public' : + 'private' : ( ('CV_LMEDS', 4), ('CV_RANSAC', 8), @@ -435,10 +445,11 @@ JNIEXPORT jdoubleArray JNICALL Java_org_opencv_core_Core_n_1getTextSize } class ConstInfo(object): - def __init__(self, cname, name, val): + def __init__(self, cname, name, val, addedManually=False): self.cname = cname self.name = re.sub(r"^Cv", "", name) self.value = val + self.addedManually = addedManually class ClassPropInfo(object): @@ -591,17 +602,17 @@ public class %s { if classinfo.name in missing_consts: if 'private' in missing_consts[classinfo.name]: for (name, val) in missing_consts[classinfo.name]['private']: - classinfo.private_consts.append( ConstInfo(name, name, val) ) + classinfo.private_consts.append( ConstInfo(name, name, val, True) ) if 'public' in missing_consts[classinfo.name]: for (name, val) in missing_consts[classinfo.name]['public']: - classinfo.consts.append( ConstInfo(name, name, val) ) + classinfo.consts.append( ConstInfo(name, name, val, True) ) # class props for p in decl[3]: if "vector" not in p[0]: classinfo.props.append( ClassPropInfo(p) ) else: - print "Skipped proprty: [%s]" % classinfo.name, p + print "Skipped property: [%s]" % classinfo.name, p self.add_class_code_stream(classinfo.name) @@ -624,14 +635,24 @@ public class %s { # this class isn't wrapped # skipping this const return + consts = self.classes[classname].consts + for c in const_private_list: + if re.match(c, name): + consts = self.classes[classname].private_consts + break + constinfo = ConstInfo(cname, name, decl[1]) # checking duplication - for c in consts: - if c.name == constinfo.name: - print "Generator error: constant %s (%s) is duplicated" \ - % (constinfo.name, constinfo.cname) - sys.exit(-1) + for list in self.classes[classname].consts, self.classes[classname].private_consts: + for c in list: + if c.name == constinfo.name: + if c.addedManually: + return + print "Generator error: constant %s (%s) is duplicated" \ + % (constinfo.name, constinfo.cname) + sys.exit(-1) + consts.append(constinfo) def add_func(self, decl):