Skip to content

Commit 720e2d4

Browse files
committed
[C#] Improve reserved word avoidance and use in complex enums
1 parent 29a9573 commit 720e2d4

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

csharp_strings.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ def safe_arg_name(arg_name):
1515
return "_" + arg_name if arg_name == "lock" or arg_name == "event" or arg_name == "params" else arg_name
1616

1717
def arg_name_repl(s, arg_name):
18-
return s.replace(arg_name, "_" + arg_name) if arg_name == "lock" or arg_name == "event" or arg_name == "params" else s
18+
if arg_name == "lock" or arg_name == "event" or arg_name == "params":
19+
names = [i for i in range(len(s)-1, -1, -1) if s.startswith(arg_name, i)]
20+
separators = set([",", "(", ")", " ", "."])
21+
for idx in names:
22+
match = idx == 0 or s[idx - 1] in separators
23+
match &= idx + len(arg_name) == len(s) or s[idx + len(arg_name)] in separators
24+
if match:
25+
s = s[0:idx] + "_" + s[idx:]
26+
return s
27+
return s
1928

2029
class Consts:
2130
def __init__(self, DEBUG: bool, target: Target, outdir: str, **kwargs):
@@ -1133,15 +1142,16 @@ def map_complex_enum(self, struct_name, variant_list, camel_to_snake, enum_doc_c
11331142
out_c += f"\t\tcase {struct_name}_{var.var_name}: return {var_idx};\n"
11341143
hu_conv_body = ""
11351144
for idx, (field_ty, field_docs) in enumerate(var.fields):
1145+
arg_name = safe_arg_name(field_ty.arg_name)
11361146
if field_docs is not None:
11371147
java_hu_subclasses += "\t\t/**\n\t\t * " + field_docs.replace("\n", "\n\t\t * ") + "\n\t\t */\n"
1138-
java_hu_subclasses += f"\t\tpublic {field_ty.java_hu_ty} {field_ty.arg_name};\n"
1148+
java_hu_subclasses += f"\t\tpublic {field_ty.java_hu_ty} {arg_name};\n"
11391149
if field_ty.to_hu_conv is not None:
1140-
hu_conv_body += f"\t\t\t{field_ty.java_ty} {field_ty.arg_name} = bindings.{struct_name}_{var.var_name}_get_{field_ty.arg_name}(ptr);\n"
1141-
hu_conv_body += f"\t\t\t" + field_ty.to_hu_conv.replace("\n", "\n\t\t\t") + "\n"
1142-
hu_conv_body += f"\t\t\tthis." + field_ty.arg_name + " = " + field_ty.to_hu_conv_name + ";\n"
1150+
hu_conv_body += f"\t\t\t{field_ty.java_ty} {arg_name} = bindings.{struct_name}_{var.var_name}_get_{field_ty.arg_name}(ptr);\n"
1151+
hu_conv_body += f"\t\t\t" + arg_name_repl(field_ty.to_hu_conv.replace("\n", "\n\t\t\t"), field_ty.arg_name) + "\n"
1152+
hu_conv_body += f"\t\t\tthis." + arg_name + " = " + arg_name_repl(field_ty.to_hu_conv_name, field_ty.arg_name) + ";\n"
11431153
else:
1144-
hu_conv_body += f"\t\t\tthis.{field_ty.arg_name} = bindings.{struct_name}_{var.var_name}_get_{field_ty.arg_name}(ptr);\n"
1154+
hu_conv_body += f"\t\t\tthis.{arg_name} = bindings.{struct_name}_{var.var_name}_get_{arg_name}(ptr);\n"
11451155
java_hu_subclasses += "\t\tinternal " + java_hu_type + "_" + var.var_name + "(long ptr) : base(null, ptr) {\n"
11461156
java_hu_subclasses += hu_conv_body
11471157
java_hu_subclasses += "\t\t}\n\t}\n"

0 commit comments

Comments
 (0)