Skip to content

Commit e05cdb2

Browse files
Enforce p_ prefixes for arguments in binds
Also enforce argument naming in a few missed places causing errors with keywords
1 parent 6c40641 commit e05cdb2

File tree

1 file changed

+29
-23
lines changed

1 file changed

+29
-23
lines changed

binding_generator.py

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
661661
result.append(method_signature)
662662

663663
# Move constructor.
664-
result.append(f"\t{class_name}({class_name} &&other);")
664+
result.append(f"\t{class_name}({class_name} &&p_other);")
665665

666666
# Special cases.
667667
if class_name == "String" or class_name == "StringName" or class_name == "NodePath":
@@ -756,7 +756,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
756756
if operator["name"] not in ["in", "xor"]:
757757
if "right_type" in operator:
758758
result.append(
759-
f'\t{correct_type(operator["return_type"])} operator{operator["name"]}({type_for_parameter(operator["right_type"])}other) const;'
759+
f'\t{correct_type(operator["return_type"])} operator{operator["name"]}({type_for_parameter(operator["right_type"])}p_other) const;'
760760
)
761761
else:
762762
result.append(
@@ -765,10 +765,10 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
765765

766766
# Copy assignment.
767767
if copy_constructor_index >= 0:
768-
result.append(f"\t{class_name} &operator=(const {class_name} &other);")
768+
result.append(f"\t{class_name} &operator=(const {class_name} &p_other);")
769769

770770
# Move assignment.
771-
result.append(f"\t{class_name} &operator=({class_name} &&other);")
771+
result.append(f"\t{class_name} &operator=({class_name} &&p_other);")
772772

773773
# Special cases.
774774
if class_name == "String":
@@ -1098,13 +1098,13 @@ def generate_builtin_class_source(builtin_api, size, used_classes, fully_used_cl
10981098
result.append("")
10991099

11001100
# Move constructor.
1101-
result.append(f"{class_name}::{class_name}({class_name} &&other) {{")
1101+
result.append(f"{class_name}::{class_name}({class_name} &&p_other) {{")
11021102
if needs_copy_instead_of_move(class_name) and copy_constructor_index >= 0:
11031103
result.append(
1104-
f"\tinternal::_call_builtin_constructor(_method_bindings.constructor_{copy_constructor_index}, &opaque, &other);"
1104+
f"\tinternal::_call_builtin_constructor(_method_bindings.constructor_{copy_constructor_index}, &opaque, &p_other);"
11051105
)
11061106
else:
1107-
result.append("\tstd::swap(opaque, other.opaque);")
1107+
result.append("\tstd::swap(opaque, p_other.opaque);")
11081108
result.append("}")
11091109
result.append("")
11101110

@@ -1195,7 +1195,7 @@ def generate_builtin_class_source(builtin_api, size, used_classes, fully_used_cl
11951195
if operator["name"] not in ["in", "xor"]:
11961196
if "right_type" in operator:
11971197
result.append(
1198-
f'{correct_type(operator["return_type"])} {class_name}::operator{operator["name"]}({type_for_parameter(operator["right_type"])}other) const {{'
1198+
f'{correct_type(operator["return_type"])} {class_name}::operator{operator["name"]}({type_for_parameter(operator["right_type"])}p_other) const {{'
11991199
)
12001200
(encode, arg_name) = get_encoded_arg("other", operator["right_type"], None)
12011201
result += encode
@@ -1215,7 +1215,7 @@ def generate_builtin_class_source(builtin_api, size, used_classes, fully_used_cl
12151215

12161216
# Copy assignment.
12171217
if copy_constructor_index >= 0:
1218-
result.append(f"{class_name} &{class_name}::operator=(const {class_name} &other) {{")
1218+
result.append(f"{class_name} &{class_name}::operator=(const {class_name} &p_other) {{")
12191219
if builtin_api["has_destructor"]:
12201220
result.append("\t_method_bindings.destructor(&opaque);")
12211221
(encode, arg_name) = get_encoded_arg(
@@ -1232,13 +1232,13 @@ def generate_builtin_class_source(builtin_api, size, used_classes, fully_used_cl
12321232
result.append("")
12331233

12341234
# Move assignment.
1235-
result.append(f"{class_name} &{class_name}::operator=({class_name} &&other) {{")
1235+
result.append(f"{class_name} &{class_name}::operator=({class_name} &&p_other) {{")
12361236
if needs_copy_instead_of_move(class_name) and copy_constructor_index >= 0:
12371237
result.append(
1238-
f"\tinternal::_call_builtin_constructor(_method_bindings.constructor_{copy_constructor_index}, &opaque, &other);"
1238+
f"\tinternal::_call_builtin_constructor(_method_bindings.constructor_{copy_constructor_index}, &opaque, &p_other);"
12391239
)
12401240
else:
1241-
result.append("\tstd::swap(opaque, other.opaque);")
1241+
result.append("\tstd::swap(opaque, p_other.opaque);")
12421242
result.append("\treturn *this;")
12431243
result.append("}")
12441244

@@ -1711,7 +1711,7 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
17111711
if "alias_for" in class_api and return_type.startswith(class_api["alias_for"] + "::"):
17121712
method_body += f"({return_type})"
17131713
method_body += f'ClassDBSingleton::get_singleton()->{method["name"]}('
1714-
method_body += ", ".join(map(lambda x: escape_identifier(x["name"]), method_arguments))
1714+
method_body += ", ".join(map(lambda x: escape_argument(x["name"]), method_arguments))
17151715
method_body += "); \\"
17161716

17171717
result.append(method_body)
@@ -1873,7 +1873,7 @@ def generate_engine_class_source(class_api, used_classes, fully_used_classes, us
18731873
else: # vararg.
18741874
result.append("\tGDExtensionCallError error;")
18751875
result.append("\tVariant ret;")
1876-
method_call += "internal::gdextension_interface_object_method_bind_call(_gde_method_bind, _owner, reinterpret_cast<GDExtensionConstVariantPtr *>(args), arg_count, &ret, &error"
1876+
method_call += "internal::gdextension_interface_object_method_bind_call(_gde_method_bind, _owner, reinterpret_cast<GDExtensionConstVariantPtr *>(p_args), p_arg_count, &ret, &error"
18771877

18781878
if is_ref:
18791879
method_call += ")" # Close Ref<> constructor.
@@ -2142,7 +2142,7 @@ def generate_utility_functions(api, output_dir):
21422142
source.append(f'\t{get_gdextension_type(correct_type(function["return_type"]))} ret;')
21432143
else:
21442144
source.append("\tVariant ret;")
2145-
function_call += "_gde_function(&ret, reinterpret_cast<GDExtensionConstVariantPtr *>(args), arg_count"
2145+
function_call += "_gde_function(&ret, reinterpret_cast<GDExtensionConstVariantPtr *>(p_args), p_arg_count"
21462146

21472147
function_call += ");"
21482148
source.append(function_call)
@@ -2173,9 +2173,9 @@ def make_function_parameters(parameters, include_default=False, for_builtin=Fals
21732173

21742174
for index, par in enumerate(parameters):
21752175
parameter = type_for_parameter(par["type"], par["meta"] if "meta" in par else None)
2176-
parameter_name = escape_identifier(par["name"])
2176+
parameter_name = escape_argument(par["name"])
21772177
if len(parameter_name) == 0:
2178-
parameter_name = "arg_" + str(index + 1)
2178+
parameter_name = "p_arg_" + str(index + 1)
21792179
parameter += parameter_name
21802180

21812181
if include_default and "default_value" in par and (not for_builtin or par["type"] != "Variant"):
@@ -2189,7 +2189,7 @@ def make_function_parameters(parameters, include_default=False, for_builtin=Fals
21892189
signature.append(parameter)
21902190

21912191
if is_vararg:
2192-
signature.append("const Args&... args")
2192+
signature.append("const Args&... p_args")
21932193

21942194
return ", ".join(signature)
21952195

@@ -2220,7 +2220,7 @@ def get_include_path(type_name):
22202220
def get_encoded_arg(arg_name, type_name, type_meta):
22212221
result = []
22222222

2223-
name = escape_identifier(arg_name)
2223+
name = escape_argument(arg_name)
22242224
arg_type = correct_type(type_name)
22252225
if is_pod_type(arg_type):
22262226
result.append(f"\t{get_gdextension_type(arg_type)} {name}_encoded;")
@@ -2286,7 +2286,7 @@ def make_signature(
22862286
if not is_vararg:
22872287
function_signature += make_function_parameters(arguments, for_header, for_builtin, is_vararg)
22882288
else:
2289-
function_signature += "const Variant **args, GDExtensionInt arg_count"
2289+
function_signature += "const Variant **p_args, GDExtensionInt p_arg_count"
22902290

22912291
function_signature += ")"
22922292

@@ -2359,12 +2359,12 @@ def make_varargs_template(
23592359
args_array = f"\tstd::array<Variant, {len(method_arguments)} + sizeof...(Args)> variant_args {{ "
23602360
for argument in method_arguments:
23612361
if argument["type"] == "Variant":
2362-
args_array += argument["name"]
2362+
args_array += escape_argument(argument["name"])
23632363
else:
2364-
args_array += f'Variant({argument["name"]})'
2364+
args_array += f'Variant({escape_argument(argument["name"])})'
23652365
args_array += ", "
23662366

2367-
args_array += "Variant(args)... };"
2367+
args_array += "Variant(p_args)... };"
23682368
result.append(args_array)
23692369
result.append(f"\tstd::array<const Variant *, {len(method_arguments)} + sizeof...(Args)> call_args;")
23702370
result.append("\tfor(size_t i = 0; i < variant_args.size(); i++) {")
@@ -2665,6 +2665,12 @@ def escape_identifier(id):
26652665
return id
26662666

26672667

2668+
def escape_argument(id):
2669+
if id.startswith("p_"):
2670+
return id
2671+
return "p_" + id
2672+
2673+
26682674
def get_operator_id_name(op):
26692675
op_id_map = {
26702676
"==": "equal",

0 commit comments

Comments
 (0)