Merge pull request #1716 from tomfull123/master

Add support for `initializer_list` to Array and TypedArray
This commit is contained in:
David Snopek
2025-04-05 10:32:18 -05:00
committed by GitHub
3 changed files with 16 additions and 1 deletions

View File

@@ -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)) { \
} \

View File

@@ -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