mirror of
https://github.com/opencv/opencv.git
synced 2025-08-01 02:18:01 +08:00
java: avoid enum values with references on other enums
declaration order is not fixed Error message: Core.java:97: error: illegal forward reference Hamming_normType = NORM_HAMMING,
This commit is contained in:
parent
030e955db7
commit
0a98bc0ee9
@ -953,11 +953,19 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|||||||
def gen_class(self, ci):
|
def gen_class(self, ci):
|
||||||
logging.info("%s", ci)
|
logging.info("%s", ci)
|
||||||
# constants
|
# constants
|
||||||
|
consts_map = {c.name: c for c in ci.private_consts}
|
||||||
|
consts_map.update({c.name: c for c in ci.consts})
|
||||||
|
def const_value(v):
|
||||||
|
if v in consts_map:
|
||||||
|
target = consts_map[v]
|
||||||
|
assert target.value != v
|
||||||
|
return const_value(target.value)
|
||||||
|
return v
|
||||||
if ci.private_consts:
|
if ci.private_consts:
|
||||||
logging.info("%s", ci.private_consts)
|
logging.info("%s", ci.private_consts)
|
||||||
ci.j_code.write("""
|
ci.j_code.write("""
|
||||||
private static final int
|
private static final int
|
||||||
%s;\n\n""" % (",\n"+" "*12).join(["%s = %s" % (c.name, c.value) for c in ci.private_consts])
|
%s;\n\n""" % (",\n"+" "*12).join(["%s = %s" % (c.name, const_value(c.value)) for c in ci.private_consts])
|
||||||
)
|
)
|
||||||
if ci.consts:
|
if ci.consts:
|
||||||
enumTypes = set(map(lambda c: c.enumType, ci.consts))
|
enumTypes = set(map(lambda c: c.enumType, ci.consts))
|
||||||
@ -975,19 +983,19 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
|
|||||||
# {1}(int id) {{ this.id = id; }}
|
# {1}(int id) {{ this.id = id; }}
|
||||||
# {1}({1} _this) {{ this.id = _this.id; }}
|
# {1}({1} _this) {{ this.id = _this.id; }}
|
||||||
# public int getValue() {{ return id; }}
|
# public int getValue() {{ return id; }}
|
||||||
# }}\n\n""".format((",\n"+" "*8).join(["%s(%s)" % (c.name, c.value) for c in consts]), typeName)
|
# }}\n\n""".format((",\n"+" "*8).join(["%s(%s)" % (c.name, const_value(c.value)) for c in consts]), typeName)
|
||||||
# )
|
# )
|
||||||
################################################################
|
################################################################
|
||||||
ci.j_code.write("""
|
ci.j_code.write("""
|
||||||
// C++: enum {1}
|
// C++: enum {1}
|
||||||
public static final int
|
public static final int
|
||||||
{0};\n\n""".format((",\n"+" "*12).join(["%s = %s" % (c.name, c.value) for c in consts]), typeName)
|
{0};\n\n""".format((",\n"+" "*12).join(["%s = %s" % (c.name, const_value(c.value)) for c in consts]), typeName)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
ci.j_code.write("""
|
ci.j_code.write("""
|
||||||
// C++: enum <unnamed>
|
// C++: enum <unnamed>
|
||||||
public static final int
|
public static final int
|
||||||
{0};\n\n""".format((",\n"+" "*12).join(["%s = %s" % (c.name, c.value) for c in consts]))
|
{0};\n\n""".format((",\n"+" "*12).join(["%s = %s" % (c.name, const_value(c.value)) for c in consts]))
|
||||||
)
|
)
|
||||||
# methods
|
# methods
|
||||||
for fi in ci.getAllMethods():
|
for fi in ci.getAllMethods():
|
||||||
|
Loading…
Reference in New Issue
Block a user