@@ -1670,13 +1670,16 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
1670
1670
result .append ("\t \\ " )
1671
1671
1672
1672
for method in class_api ["methods" ]:
1673
- # ClassDBSingleton shouldn't have any static or vararg methods, but if some appear later, lets skip them.
1674
- if vararg :
1675
- continue
1673
+ # ClassDBSingleton shouldn't have any static methods, but if some appear later, lets skip them.
1676
1674
if "is_static" in method and method ["is_static" ]:
1677
1675
continue
1678
1676
1679
- method_signature = "\t static "
1677
+ vararg = "is_vararg" in method and method ["is_vararg" ]
1678
+ if vararg :
1679
+ method_signature = "\t template<typename... Args> static "
1680
+ else :
1681
+ method_signature = "\t static "
1682
+
1680
1683
return_type = None
1681
1684
if "return_type" in method :
1682
1685
return_type = correct_type (method ["return_type" ].replace ("ClassDBSingleton" , "ClassDB" ), None , False )
@@ -1698,7 +1701,7 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
1698
1701
method_arguments = method ["arguments" ]
1699
1702
1700
1703
method_signature += make_function_parameters (
1701
- method_arguments , include_default = True , for_builtin = True , is_vararg = False
1704
+ method_arguments , include_default = True , for_builtin = True , is_vararg = vararg
1702
1705
)
1703
1706
1704
1707
method_signature += ") { \\ "
@@ -1712,6 +1715,8 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
1712
1715
method_body += f"({ return_type } )"
1713
1716
method_body += f'ClassDBSingleton::get_singleton()->{ method ["name" ]} ('
1714
1717
method_body += ", " .join (map (lambda x : escape_identifier (x ["name" ]), method_arguments ))
1718
+ if vararg :
1719
+ method_body += ", args..."
1715
1720
method_body += "); \\ "
1716
1721
1717
1722
result .append (method_body )
@@ -2359,9 +2364,9 @@ def make_varargs_template(
2359
2364
args_array = f"\t std::array<Variant, { len (method_arguments )} + sizeof...(Args)> variant_args {{ "
2360
2365
for argument in method_arguments :
2361
2366
if argument ["type" ] == "Variant" :
2362
- args_array += argument ["name" ]
2367
+ args_array += escape_identifier ( argument ["name" ])
2363
2368
else :
2364
- args_array += f'Variant({ argument ["name" ]} )'
2369
+ args_array += f'Variant({ escape_identifier ( argument ["name" ]) } )'
2365
2370
args_array += ", "
2366
2371
2367
2372
args_array += "Variant(args)... };"
0 commit comments