[Packed*Array] Add support for initializer lists.
(cherry picked from commit 8c98a90f32
)
pull/1411/head
parent
07e245e3e4
commit
e99d7b3b7e
|
@ -375,6 +375,10 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
|
||||||
if class_name == "PackedVector3Array":
|
if class_name == "PackedVector3Array":
|
||||||
result.append("#include <godot_cpp/variant/vector3.hpp>")
|
result.append("#include <godot_cpp/variant/vector3.hpp>")
|
||||||
|
|
||||||
|
if is_packed_array(class_name):
|
||||||
|
result.append("#include <godot_cpp/core/error_macros.hpp>")
|
||||||
|
result.append("#include <initializer_list>")
|
||||||
|
|
||||||
if class_name == "Array":
|
if class_name == "Array":
|
||||||
result.append("#include <godot_cpp/variant/array_helpers.hpp>")
|
result.append("#include <godot_cpp/variant/array_helpers.hpp>")
|
||||||
|
|
||||||
|
@ -692,6 +696,17 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
result.append(iterators.replace("$TYPE", return_type))
|
result.append(iterators.replace("$TYPE", return_type))
|
||||||
|
init_list = """
|
||||||
|
_FORCE_INLINE_ $CLASS(std::initializer_list<$TYPE> p_init) {
|
||||||
|
ERR_FAIL_COND(resize(p_init.size()) != 0);
|
||||||
|
|
||||||
|
size_t i = 0;
|
||||||
|
for (const $TYPE &element : p_init) {
|
||||||
|
set(i++, element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
result.append(init_list.replace("$TYPE", return_type).replace("$CLASS", class_name))
|
||||||
|
|
||||||
if class_name == "Array":
|
if class_name == "Array":
|
||||||
result.append("\tconst Variant &operator[](int64_t p_index) const;")
|
result.append("\tconst Variant &operator[](int64_t p_index) const;")
|
||||||
|
|
|
@ -91,6 +91,7 @@ func _ready():
|
||||||
|
|
||||||
# PackedArray iterators
|
# PackedArray iterators
|
||||||
assert_equal(example.test_vector_ops(), 105)
|
assert_equal(example.test_vector_ops(), 105)
|
||||||
|
assert_equal(example.test_vector_init_list(), 105)
|
||||||
|
|
||||||
# Properties.
|
# Properties.
|
||||||
assert_equal(example.group_subgroup_custom_position, Vector2(0, 0))
|
assert_equal(example.group_subgroup_custom_position, Vector2(0, 0))
|
||||||
|
|
|
@ -148,6 +148,7 @@ void Example::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("test_str_utility"), &Example::test_str_utility);
|
ClassDB::bind_method(D_METHOD("test_str_utility"), &Example::test_str_utility);
|
||||||
ClassDB::bind_method(D_METHOD("test_string_is_fourty_two"), &Example::test_string_is_fourty_two);
|
ClassDB::bind_method(D_METHOD("test_string_is_fourty_two"), &Example::test_string_is_fourty_two);
|
||||||
ClassDB::bind_method(D_METHOD("test_vector_ops"), &Example::test_vector_ops);
|
ClassDB::bind_method(D_METHOD("test_vector_ops"), &Example::test_vector_ops);
|
||||||
|
ClassDB::bind_method(D_METHOD("test_vector_init_list"), &Example::test_vector_init_list);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("test_object_cast_to_node", "object"), &Example::test_object_cast_to_node);
|
ClassDB::bind_method(D_METHOD("test_object_cast_to_node", "object"), &Example::test_object_cast_to_node);
|
||||||
ClassDB::bind_method(D_METHOD("test_object_cast_to_control", "object"), &Example::test_object_cast_to_control);
|
ClassDB::bind_method(D_METHOD("test_object_cast_to_control", "object"), &Example::test_object_cast_to_control);
|
||||||
|
@ -339,6 +340,15 @@ int Example::test_vector_ops() const {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Example::test_vector_init_list() const {
|
||||||
|
PackedInt32Array arr = { 10, 20, 30, 45 };
|
||||||
|
int ret = 0;
|
||||||
|
for (const int32_t &E : arr) {
|
||||||
|
ret += E;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int Example::test_tarray_arg(const TypedArray<int64_t> &p_array) {
|
int Example::test_tarray_arg(const TypedArray<int64_t> &p_array) {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
for (int i = 0; i < p_array.size(); i++) {
|
for (int i = 0; i < p_array.size(); i++) {
|
||||||
|
|
|
@ -127,6 +127,7 @@ public:
|
||||||
String test_str_utility() const;
|
String test_str_utility() const;
|
||||||
bool test_string_is_fourty_two(const String &p_str) const;
|
bool test_string_is_fourty_two(const String &p_str) const;
|
||||||
int test_vector_ops() const;
|
int test_vector_ops() const;
|
||||||
|
int test_vector_init_list() const;
|
||||||
|
|
||||||
bool test_object_cast_to_node(Object *p_object) const;
|
bool test_object_cast_to_node(Object *p_object) const;
|
||||||
bool test_object_cast_to_control(Object *p_object) const;
|
bool test_object_cast_to_control(Object *p_object) const;
|
||||||
|
|
Loading…
Reference in New Issue