@@ -1670,13 +1670,16 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
16701670 result .append ("\t \\ " )
16711671
16721672 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.
16761674 if "is_static" in method and method ["is_static" ]:
16771675 continue
16781676
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+
16801683 return_type = None
16811684 if "return_type" in method :
16821685 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
16981701 method_arguments = method ["arguments" ]
16991702
17001703 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
17021705 )
17031706
17041707 method_signature += ") { \\ "
@@ -1712,6 +1715,8 @@ def generate_engine_class_header(class_api, used_classes, fully_used_classes, us
17121715 method_body += f"({ return_type } )"
17131716 method_body += f'ClassDBSingleton::get_singleton()->{ method ["name" ]} ('
17141717 method_body += ", " .join (map (lambda x : escape_identifier (x ["name" ]), method_arguments ))
1718+ if vararg :
1719+ method_body += ", args..."
17151720 method_body += "); \\ "
17161721
17171722 result .append (method_body )
@@ -2359,9 +2364,9 @@ def make_varargs_template(
23592364 args_array = f"\t std::array<Variant, { len (method_arguments )} + sizeof...(Args)> variant_args {{ "
23602365 for argument in method_arguments :
23612366 if argument ["type" ] == "Variant" :
2362- args_array += argument ["name" ]
2367+ args_array += escape_identifier ( argument ["name" ])
23632368 else :
2364- args_array += f'Variant({ argument ["name" ]} )'
2369+ args_array += f'Variant({ escape_identifier ( argument ["name" ]) } )'
23652370 args_array += ", "
23662371
23672372 args_array += "Variant(args)... };"
0 commit comments