mirror of
https://github.com/godotengine/godot-cpp.git
synced 2025-12-31 01:48:45 +03:00
Merge pull request #1716 from tomfull123/master
Add support for `initializer_list` to Array and TypedArray
This commit is contained in:
@@ -541,7 +541,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
|
||||
result.append("#include <godot_cpp/variant/vector4.hpp>")
|
||||
result.append("")
|
||||
|
||||
if is_packed_array(class_name):
|
||||
if is_packed_array(class_name) or class_name == "Array":
|
||||
result.append("#include <godot_cpp/core/error_macros.hpp>")
|
||||
result.append("#include <initializer_list>")
|
||||
result.append("")
|
||||
@@ -953,6 +953,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
|
||||
_FORCE_INLINE_ ConstIterator begin() const;
|
||||
_FORCE_INLINE_ ConstIterator end() const;
|
||||
""")
|
||||
result.append("\t_FORCE_INLINE_ Array(std::initializer_list<Variant> p_init);")
|
||||
|
||||
if class_name == "Dictionary":
|
||||
result.append("\tconst Variant &operator[](const Variant &p_key) const;")
|
||||
|
||||
@@ -53,6 +53,8 @@ public:
|
||||
assign(p_array);
|
||||
}
|
||||
}
|
||||
_FORCE_INLINE_ TypedArray(std::initializer_list<Variant> p_init) :
|
||||
TypedArray(Array(p_init)) {}
|
||||
_FORCE_INLINE_ TypedArray() {
|
||||
set_typed(Variant::OBJECT, T::get_class_static(), Variant());
|
||||
}
|
||||
@@ -68,6 +70,9 @@ public:
|
||||
ERR_FAIL_COND_MSG(!is_same_typed(p_array), "Cannot assign an array with a different element type."); \
|
||||
_ref(p_array); \
|
||||
} \
|
||||
_FORCE_INLINE_ TypedArray(std::initializer_list<Variant> p_init) : \
|
||||
Array(Array(p_init), m_variant_type, StringName(), Variant()) { \
|
||||
} \
|
||||
_FORCE_INLINE_ TypedArray(const Variant &p_variant) : \
|
||||
TypedArray(Array(p_variant)) { \
|
||||
} \
|
||||
|
||||
@@ -408,6 +408,15 @@ Array::ConstIterator Array::end() const {
|
||||
return Array::ConstIterator(ptr() + size());
|
||||
}
|
||||
|
||||
Array::Array(std::initializer_list<Variant> p_init) {
|
||||
ERR_FAIL_COND(resize(p_init.size()) != 0);
|
||||
|
||||
size_t i = 0;
|
||||
for (const Variant &element : p_init) {
|
||||
set(i++, element);
|
||||
}
|
||||
}
|
||||
|
||||
#include <godot_cpp/variant/builtin_vararg_methods.hpp>
|
||||
|
||||
#ifdef REAL_T_IS_DOUBLE
|
||||
|
||||
Reference in New Issue
Block a user