adds Array::make and Dictionary::make static methods and has variadic template functions use those

pull/108/head
danielytics 2018-03-07 10:27:34 +00:00
parent c7b03c4132
commit 01db553c49
4 changed files with 13 additions and 2 deletions

View File

@ -221,7 +221,7 @@ def generate_class_header(used_classes, c):
if len(method["arguments"]) > 0: if len(method["arguments"]) > 0:
method_signature += ", " method_signature += ", "
method_arguments += ", " method_arguments += ", "
vararg_templates += "\ttemplate <class... Args> " + method_signature + "Args... args){\n\t\treturn " + method_name + "(" + method_arguments + "godot::helpers::append_all(Array(), args...));\n\t}\n""" vararg_templates += "\ttemplate <class... Args> " + method_signature + "Args... args){\n\t\treturn " + method_name + "(" + method_arguments + "Array::make(args...));\n\t}\n"""
method_signature += "const Array& __var_args = Array()" method_signature += "const Array& __var_args = Array()"
method_signature += ")" + (" const" if method["is_const"] and not c["singleton"] else "") method_signature += ")" + (" const" if method["is_const"] and not c["singleton"] else "")

View File

@ -3,6 +3,7 @@
#include <gdnative/array.h> #include <gdnative/array.h>
#include "Defs.hpp"
#include "String.hpp" #include "String.hpp"
namespace godot { namespace godot {
@ -39,6 +40,11 @@ public:
Array(const PoolColorArray& a); Array(const PoolColorArray& a);
template <class... Args>
static Array make(Args... args) {
return helpers::append_all(Array(), args...);
}
Variant& operator [](const int idx); Variant& operator [](const int idx);
Variant operator [](const int idx) const; Variant operator [](const int idx) const;

View File

@ -16,6 +16,11 @@ public:
Dictionary(const Dictionary & other); Dictionary(const Dictionary & other);
Dictionary & operator=(const Dictionary & other); Dictionary & operator=(const Dictionary & other);
template <class... Args>
static Dictionary make(Args... args) {
return helpers::add_all(Dictionary(), args...);
}
void clear(); void clear();
bool empty() const; bool empty() const;

View File

@ -487,7 +487,7 @@ void register_signal(String name, Dictionary args = Dictionary())
template<class T, class... Args> template<class T, class... Args>
void register_signal(String name, Args... varargs) void register_signal(String name, Args... varargs)
{ {
register_signal<T>(name, helpers::add_all(Dictionary(), varargs...)); register_signal<T>(name, Dictionary::make(varargs...));
} }
} }