Commit 84ae8097 authored by Hamdi Sahloul's avatar Hamdi Sahloul Committed by Alexander Alekhin

Merge pull request #12601 from cv3d:fix/js

* JS: Support enum types in constructors

* JS: Avoid unary expression on enum-based consts
parent 295b9886
...@@ -381,8 +381,8 @@ class JSWrapperGenerator(object): ...@@ -381,8 +381,8 @@ class JSWrapperGenerator(object):
if candidate_name not in ns.enums: if candidate_name not in ns.enums:
name = candidate_name name = candidate_name
break; break;
val = '_'.join(classes + [name])
cname = name.replace('.', '::') cname = name.replace('.', '::')
type_dict[normalize_class_name(name)] = cname
if name in ns.enums: if name in ns.enums:
print("Generator warning: enum %s (cname=%s) already exists" \ print("Generator warning: enum %s (cname=%s) already exists" \
% (name, cname)) % (name, cname))
...@@ -826,7 +826,8 @@ class JSWrapperGenerator(object): ...@@ -826,7 +826,8 @@ class JSWrapperGenerator(object):
for variant in method.variants: for variant in method.variants:
args = [] args = []
for arg in variant.args: for arg in variant.args:
args.append(arg.tp) arg_type = type_dict[arg.tp] if arg.tp in type_dict else arg.tp
args.append(arg_type)
# print('Constructor: ', class_info.name, len(variant.args)) # print('Constructor: ', class_info.name, len(variant.args))
args_num = len(variant.args) args_num = len(variant.args)
if args_num in class_info.constructor_arg_num: if args_num in class_info.constructor_arg_num:
......
...@@ -176,7 +176,7 @@ enum_template = Template(""" ...@@ -176,7 +176,7 @@ enum_template = Template("""
""") """)
const_template = Template(""" const_template = Template("""
constant("$js_name", +$value); constant("$js_name", static_cast<long>($value));
""") """)
vector_template = Template(""" vector_template = Template("""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment