@@ -657,22 +657,28 @@ static _FORCE_INLINE_ void vc_ptrcall(void (*method)(T *, P...), void *p_base, c
657657 } \
658658 };
659659
660- #define VARCALL_PACKED_GETTER (m_packed_type, m_return_type ) \
661- static m_return_type func_##m_packed_type##_get(m_packed_type *p_instance, int64_t p_index) { \
662- return p_instance->get (p_index); \
660+ #define VARCALL_ARRAY_GETTER_SETTER (m_packed_type, m_type ) \
661+ static m_type func_##m_packed_type##_get(m_packed_type *p_instance, int64_t p_index) { \
662+ ERR_FAIL_INDEX_V (p_index, p_instance->size (), m_type ()); \
663+ return p_instance->get (p_index); \
664+ } \
665+ static void func_##m_packed_type##_set(m_packed_type *p_instance, int64_t p_index, const m_type &p_value) { \
666+ ERR_FAIL_INDEX (p_index, p_instance->size ()); \
667+ p_instance->set (p_index, p_value); \
663668 }
664669
665670struct _VariantCall {
666- VARCALL_PACKED_GETTER (PackedByteArray, uint8_t )
667- VARCALL_PACKED_GETTER (PackedColorArray, Color)
668- VARCALL_PACKED_GETTER (PackedFloat32Array, float )
669- VARCALL_PACKED_GETTER (PackedFloat64Array, double )
670- VARCALL_PACKED_GETTER (PackedInt32Array, int32_t )
671- VARCALL_PACKED_GETTER (PackedInt64Array, int64_t )
672- VARCALL_PACKED_GETTER (PackedStringArray, String)
673- VARCALL_PACKED_GETTER (PackedVector2Array, Vector2)
674- VARCALL_PACKED_GETTER (PackedVector3Array, Vector3)
675- VARCALL_PACKED_GETTER (PackedVector4Array, Vector4)
671+ VARCALL_ARRAY_GETTER_SETTER (PackedByteArray, uint8_t )
672+ VARCALL_ARRAY_GETTER_SETTER (PackedColorArray, Color)
673+ VARCALL_ARRAY_GETTER_SETTER (PackedFloat32Array, float )
674+ VARCALL_ARRAY_GETTER_SETTER (PackedFloat64Array, double )
675+ VARCALL_ARRAY_GETTER_SETTER (PackedInt32Array, int32_t )
676+ VARCALL_ARRAY_GETTER_SETTER (PackedInt64Array, int64_t )
677+ VARCALL_ARRAY_GETTER_SETTER (PackedStringArray, String)
678+ VARCALL_ARRAY_GETTER_SETTER (PackedVector2Array, Vector2)
679+ VARCALL_ARRAY_GETTER_SETTER (PackedVector3Array, Vector3)
680+ VARCALL_ARRAY_GETTER_SETTER (PackedVector4Array, Vector4)
681+ VARCALL_ARRAY_GETTER_SETTER (Array, Variant)
676682
677683 static String func_PackedByteArray_get_string_from_ascii (PackedByteArray *p_instance) {
678684 String s;
@@ -2354,8 +2360,8 @@ static void _register_variant_builtin_methods_array() {
23542360 bind_method (Array, clear, sarray (), varray ());
23552361 bind_method (Array, hash, sarray (), varray ());
23562362 bind_method (Array, assign, sarray (" array" ), varray ());
2357- bind_method (Array, get, sarray (" index" ), varray ());
2358- bind_method (Array, set, sarray (" index" , " value" ), varray ());
2363+ bind_function (Array, get, _VariantCall::func_Array_get , sarray (" index" ), varray ());
2364+ bind_functionnc (Array, set, _VariantCall::func_Array_set , sarray (" index" , " value" ), varray ());
23592365 bind_method (Array, push_back, sarray (" value" ), varray ());
23602366 bind_method (Array, push_front, sarray (" value" ), varray ());
23612367 bind_method (Array, append, sarray (" value" ), varray ());
@@ -2400,7 +2406,7 @@ static void _register_variant_builtin_methods_array() {
24002406 bind_method (Array, make_read_only, sarray (), varray ());
24012407 bind_method (Array, is_read_only, sarray (), varray ());
24022408
2403- /* Packed*Array get (see VARCALL_PACKED_GETTER macro) */
2409+ /* Packed*Array get/set (see VARCALL_ARRAY_GETTER_SETTER macro) */
24042410 bind_function (PackedByteArray, get, _VariantCall::func_PackedByteArray_get, sarray (" index" ), varray ());
24052411 bind_function (PackedColorArray, get, _VariantCall::func_PackedColorArray_get, sarray (" index" ), varray ());
24062412 bind_function (PackedFloat32Array, get, _VariantCall::func_PackedFloat32Array_get, sarray (" index" ), varray ());
@@ -2412,10 +2418,20 @@ static void _register_variant_builtin_methods_array() {
24122418 bind_function (PackedVector3Array, get, _VariantCall::func_PackedVector3Array_get, sarray (" index" ), varray ());
24132419 bind_function (PackedVector4Array, get, _VariantCall::func_PackedVector4Array_get, sarray (" index" ), varray ());
24142420
2421+ bind_functionnc (PackedByteArray, set, _VariantCall::func_PackedByteArray_set, sarray (" index" , " value" ), varray ());
2422+ bind_functionnc (PackedColorArray, set, _VariantCall::func_PackedColorArray_set, sarray (" index" , " value" ), varray ());
2423+ bind_functionnc (PackedFloat32Array, set, _VariantCall::func_PackedFloat32Array_set, sarray (" index" , " value" ), varray ());
2424+ bind_functionnc (PackedFloat64Array, set, _VariantCall::func_PackedFloat64Array_set, sarray (" index" , " value" ), varray ());
2425+ bind_functionnc (PackedInt32Array, set, _VariantCall::func_PackedInt32Array_set, sarray (" index" , " value" ), varray ());
2426+ bind_functionnc (PackedInt64Array, set, _VariantCall::func_PackedInt64Array_set, sarray (" index" , " value" ), varray ());
2427+ bind_functionnc (PackedStringArray, set, _VariantCall::func_PackedStringArray_set, sarray (" index" , " value" ), varray ());
2428+ bind_functionnc (PackedVector2Array, set, _VariantCall::func_PackedVector2Array_set, sarray (" index" , " value" ), varray ());
2429+ bind_functionnc (PackedVector3Array, set, _VariantCall::func_PackedVector3Array_set, sarray (" index" , " value" ), varray ());
2430+ bind_functionnc (PackedVector4Array, set, _VariantCall::func_PackedVector4Array_set, sarray (" index" , " value" ), varray ());
2431+
24152432 /* Byte Array */
24162433 bind_method (PackedByteArray, size, sarray (), varray ());
24172434 bind_method (PackedByteArray, is_empty, sarray (), varray ());
2418- bind_method (PackedByteArray, set, sarray (" index" , " value" ), varray ());
24192435 bind_method (PackedByteArray, push_back, sarray (" value" ), varray ());
24202436 bind_method (PackedByteArray, append, sarray (" value" ), varray ());
24212437 bind_method (PackedByteArray, append_array, sarray (" array" ), varray ());
@@ -2481,7 +2497,6 @@ static void _register_variant_builtin_methods_array() {
24812497
24822498 bind_method (PackedInt32Array, size, sarray (), varray ());
24832499 bind_method (PackedInt32Array, is_empty, sarray (), varray ());
2484- bind_method (PackedInt32Array, set, sarray (" index" , " value" ), varray ());
24852500 bind_method (PackedInt32Array, push_back, sarray (" value" ), varray ());
24862501 bind_method (PackedInt32Array, append, sarray (" value" ), varray ());
24872502 bind_method (PackedInt32Array, append_array, sarray (" array" ), varray ());
@@ -2505,7 +2520,6 @@ static void _register_variant_builtin_methods_array() {
25052520
25062521 bind_method (PackedInt64Array, size, sarray (), varray ());
25072522 bind_method (PackedInt64Array, is_empty, sarray (), varray ());
2508- bind_method (PackedInt64Array, set, sarray (" index" , " value" ), varray ());
25092523 bind_method (PackedInt64Array, push_back, sarray (" value" ), varray ());
25102524 bind_method (PackedInt64Array, append, sarray (" value" ), varray ());
25112525 bind_method (PackedInt64Array, append_array, sarray (" array" ), varray ());
@@ -2529,7 +2543,6 @@ static void _register_variant_builtin_methods_array() {
25292543
25302544 bind_method (PackedFloat32Array, size, sarray (), varray ());
25312545 bind_method (PackedFloat32Array, is_empty, sarray (), varray ());
2532- bind_method (PackedFloat32Array, set, sarray (" index" , " value" ), varray ());
25332546 bind_method (PackedFloat32Array, push_back, sarray (" value" ), varray ());
25342547 bind_method (PackedFloat32Array, append, sarray (" value" ), varray ());
25352548 bind_method (PackedFloat32Array, append_array, sarray (" array" ), varray ());
@@ -2553,7 +2566,6 @@ static void _register_variant_builtin_methods_array() {
25532566
25542567 bind_method (PackedFloat64Array, size, sarray (), varray ());
25552568 bind_method (PackedFloat64Array, is_empty, sarray (), varray ());
2556- bind_method (PackedFloat64Array, set, sarray (" index" , " value" ), varray ());
25572569 bind_method (PackedFloat64Array, push_back, sarray (" value" ), varray ());
25582570 bind_method (PackedFloat64Array, append, sarray (" value" ), varray ());
25592571 bind_method (PackedFloat64Array, append_array, sarray (" array" ), varray ());
@@ -2577,7 +2589,6 @@ static void _register_variant_builtin_methods_array() {
25772589
25782590 bind_method (PackedStringArray, size, sarray (), varray ());
25792591 bind_method (PackedStringArray, is_empty, sarray (), varray ());
2580- bind_method (PackedStringArray, set, sarray (" index" , " value" ), varray ());
25812592 bind_method (PackedStringArray, push_back, sarray (" value" ), varray ());
25822593 bind_method (PackedStringArray, append, sarray (" value" ), varray ());
25832594 bind_method (PackedStringArray, append_array, sarray (" array" ), varray ());
@@ -2601,7 +2612,6 @@ static void _register_variant_builtin_methods_array() {
26012612
26022613 bind_method (PackedVector2Array, size, sarray (), varray ());
26032614 bind_method (PackedVector2Array, is_empty, sarray (), varray ());
2604- bind_method (PackedVector2Array, set, sarray (" index" , " value" ), varray ());
26052615 bind_method (PackedVector2Array, push_back, sarray (" value" ), varray ());
26062616 bind_method (PackedVector2Array, append, sarray (" value" ), varray ());
26072617 bind_method (PackedVector2Array, append_array, sarray (" array" ), varray ());
@@ -2625,7 +2635,6 @@ static void _register_variant_builtin_methods_array() {
26252635
26262636 bind_method (PackedVector3Array, size, sarray (), varray ());
26272637 bind_method (PackedVector3Array, is_empty, sarray (), varray ());
2628- bind_method (PackedVector3Array, set, sarray (" index" , " value" ), varray ());
26292638 bind_method (PackedVector3Array, push_back, sarray (" value" ), varray ());
26302639 bind_method (PackedVector3Array, append, sarray (" value" ), varray ());
26312640 bind_method (PackedVector3Array, append_array, sarray (" array" ), varray ());
@@ -2649,7 +2658,6 @@ static void _register_variant_builtin_methods_array() {
26492658
26502659 bind_method (PackedColorArray, size, sarray (), varray ());
26512660 bind_method (PackedColorArray, is_empty, sarray (), varray ());
2652- bind_method (PackedColorArray, set, sarray (" index" , " value" ), varray ());
26532661 bind_method (PackedColorArray, push_back, sarray (" value" ), varray ());
26542662 bind_method (PackedColorArray, append, sarray (" value" ), varray ());
26552663 bind_method (PackedColorArray, append_array, sarray (" array" ), varray ());
@@ -2673,7 +2681,6 @@ static void _register_variant_builtin_methods_array() {
26732681
26742682 bind_method (PackedVector4Array, size, sarray (), varray ());
26752683 bind_method (PackedVector4Array, is_empty, sarray (), varray ());
2676- bind_method (PackedVector4Array, set, sarray (" index" , " value" ), varray ());
26772684 bind_method (PackedVector4Array, push_back, sarray (" value" ), varray ());
26782685 bind_method (PackedVector4Array, append, sarray (" value" ), varray ());
26792686 bind_method (PackedVector4Array, append_array, sarray (" array" ), varray ());
0 commit comments