summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanielytics <danielytics@users.noreply.github.com>2018-03-07 10:27:34 +0000
committerdanielytics <danielytics@users.noreply.github.com>2018-03-07 10:27:34 +0000
commit01db553c49345b683ff9da3283bc92a8c2933af2 (patch)
treea8903fdf5e01999ee15065176bb6048d54a0b35d
parentc7b03c4132f9be5846141fb101f8f89522eb8efa (diff)
downloadredot-cpp-01db553c49345b683ff9da3283bc92a8c2933af2.tar.gz
adds Array::make and Dictionary::make static methods and has variadic template functions use those
-rw-r--r--binding_generator.py2
-rw-r--r--include/core/Array.hpp6
-rw-r--r--include/core/Dictionary.hpp5
-rw-r--r--include/core/Godot.hpp2
4 files changed, 13 insertions, 2 deletions
diff --git a/binding_generator.py b/binding_generator.py
index a7d874d..c39e7ed 100644
--- a/binding_generator.py
+++ b/binding_generator.py
@@ -221,7 +221,7 @@ def generate_class_header(used_classes, c):
if len(method["arguments"]) > 0:
method_signature += ", "
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" if method["is_const"] and not c["singleton"] else "")
diff --git a/include/core/Array.hpp b/include/core/Array.hpp
index 2320568..ead3ba3 100644
--- a/include/core/Array.hpp
+++ b/include/core/Array.hpp
@@ -3,6 +3,7 @@
#include <gdnative/array.h>
+#include "Defs.hpp"
#include "String.hpp"
namespace godot {
@@ -39,6 +40,11 @@ public:
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) const;
diff --git a/include/core/Dictionary.hpp b/include/core/Dictionary.hpp
index ec496af..613d6ce 100644
--- a/include/core/Dictionary.hpp
+++ b/include/core/Dictionary.hpp
@@ -16,6 +16,11 @@ public:
Dictionary(const Dictionary & other);
Dictionary & operator=(const Dictionary & other);
+ template <class... Args>
+ static Dictionary make(Args... args) {
+ return helpers::add_all(Dictionary(), args...);
+ }
+
void clear();
bool empty() const;
diff --git a/include/core/Godot.hpp b/include/core/Godot.hpp
index 8c463b6..01bee09 100644
--- a/include/core/Godot.hpp
+++ b/include/core/Godot.hpp
@@ -487,7 +487,7 @@ void register_signal(String name, Dictionary args = Dictionary())
template<class T, class... Args>
void register_signal(String name, Args... varargs)
{
- register_signal<T>(name, helpers::add_all(Dictionary(), varargs...));
+ register_signal<T>(name, Dictionary::make(varargs...));
}
}