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