@@ -1666,13 +1666,16 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
16661666 result .append ("\t \\ " )
16671667
16681668 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.
16721670 if "is_static" in method and method ["is_static" ]:
16731671 continue
16741672
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+
16761679 return_type = None
16771680 if "return_type" in method :
16781681 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
16941697 method_arguments = method ["arguments" ]
16951698
16961699 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
16981701 )
16991702
17001703 method_signature += ") { \\ "
@@ -1708,6 +1711,8 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
17081711 method_body += f"({ return_type } )"
17091712 method_body += f'ClassDBSingleton::get_singleton()->{ method ["name" ]} ('
17101713 method_body += ", " .join (map (lambda x : escape_identifier (x ["name" ]), method_arguments ))
1714+ if vararg :
1715+ method_body += ", args..."
17111716 method_body += "); \\ "
17121717
17131718 result .append (method_body )
@@ -2355,9 +2360,9 @@ def make_varargs_template(
23552360 args_array = f"\t std::array<Variant, { len (method_arguments )} + sizeof...(Args)> variant_args {{ "
23562361 for argument in method_arguments :
23572362 if argument ["type" ] == "Variant" :
2358- args_array += argument ["name" ]
2363+ args_array += escape_identifier ( argument ["name" ])
23592364 else :
2360- args_array += f'Variant({ argument ["name" ]} )'
2365+ args_array += f'Variant({ escape_identifier ( argument ["name" ]) } )'
23612366 args_array += ", "
23622367
23632368 args_array += "Variant(args)... };"
0 commit comments