From 109d3d8530eeca2e7e28838446520454ade4b4f5 Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Sat, 8 Nov 2025 12:26:28 +0100 Subject: [PATCH] Make Vector bsearch method const. --- core/templates/vector.h | 10 +---- core/variant/variant_call.cpp | 42 ++++++++++++++----- doc/classes/PackedByteArray.xml | 2 +- doc/classes/PackedColorArray.xml | 2 +- doc/classes/PackedFloat32Array.xml | 2 +- doc/classes/PackedFloat64Array.xml | 2 +- doc/classes/PackedInt32Array.xml | 2 +- doc/classes/PackedInt64Array.xml | 2 +- doc/classes/PackedStringArray.xml | 2 +- doc/classes/PackedVector2Array.xml | 2 +- doc/classes/PackedVector3Array.xml | 2 +- doc/classes/PackedVector4Array.xml | 2 +- .../4.5-stable.expected | 17 +++++++- 13 files changed, 60 insertions(+), 29 deletions(-) diff --git a/core/templates/vector.h b/core/templates/vector.h index 0ef6eba667a..562fdc8107c 100644 --- a/core/templates/vector.h +++ b/core/templates/vector.h @@ -175,12 +175,12 @@ public: sorter.sort(data, len); } - Size bsearch(const T &p_value, bool p_before) { + Size bsearch(const T &p_value, bool p_before) const { return bsearch_custom>(p_value, p_before); } template - Size bsearch_custom(const Value &p_value, bool p_before, Args &&...args) { + Size bsearch_custom(const Value &p_value, bool p_before, Args &&...args) const { return span().bisect(p_value, p_before, Comparator{ args... }); } @@ -188,12 +188,6 @@ public: return *this; } -#ifndef DISABLE_DEPRECATED - Vector _duplicate_bind_compat_112290() { - return *this; - } -#endif // DISABLE_DEPRECATED - void ordered_insert(const T &p_val) { Size i; for (i = 0; i < _cowdata.size(); i++) { diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp index b9623404a7d..b4d9e8c36f3 100644 --- a/core/variant/variant_call.cpp +++ b/core/variant/variant_call.cpp @@ -1258,6 +1258,18 @@ struct _VariantCall { enum_data[p_type].value[p_enum_type_name][p_enumeration_name] = p_enum_value; enum_data[p_type].value_to_enum[p_enumeration_name] = p_enum_type_name; } + +#ifndef DISABLE_DEPRECATED + template + static Vector _duplicate_bind_compat_112290(Vector *p_vector) { + return *p_vector; + } + + template + static int64_t _bsearch_bind_compat_112539(Vector *p_vector, const T &p_value, bool p_before) { + return p_vector->bsearch(p_value, p_before); + } +#endif }; _VariantCall::ConstantData *_VariantCall::constant_data = nullptr; @@ -2754,7 +2766,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedByteArray, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedByteArray, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedByteArray, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedByteArray, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedByteArray, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedByteArray, find, sarray("value", "from"), varray(0)); bind_method(PackedByteArray, rfind, sarray("value", "from"), varray(-1)); @@ -2833,7 +2846,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedInt32Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedInt32Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedInt32Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedInt32Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedInt32Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedInt32Array, find, sarray("value", "from"), varray(0)); bind_method(PackedInt32Array, rfind, sarray("value", "from"), varray(-1)); @@ -2860,7 +2874,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedInt64Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedInt64Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedInt64Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedInt64Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedInt64Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedInt64Array, find, sarray("value", "from"), varray(0)); bind_method(PackedInt64Array, rfind, sarray("value", "from"), varray(-1)); @@ -2887,7 +2902,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedFloat32Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedFloat32Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedFloat32Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedFloat32Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedFloat32Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedFloat32Array, find, sarray("value", "from"), varray(0)); bind_method(PackedFloat32Array, rfind, sarray("value", "from"), varray(-1)); @@ -2914,7 +2930,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedFloat64Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedFloat64Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedFloat64Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedFloat64Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedFloat64Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedFloat64Array, find, sarray("value", "from"), varray(0)); bind_method(PackedFloat64Array, rfind, sarray("value", "from"), varray(-1)); @@ -2941,7 +2958,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedStringArray, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedStringArray, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedStringArray, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedStringArray, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedStringArray, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedStringArray, find, sarray("value", "from"), varray(0)); bind_method(PackedStringArray, rfind, sarray("value", "from"), varray(-1)); @@ -2968,7 +2986,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedVector2Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedVector2Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedVector2Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector2Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector2Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedVector2Array, find, sarray("value", "from"), varray(0)); bind_method(PackedVector2Array, rfind, sarray("value", "from"), varray(-1)); @@ -2995,7 +3014,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedVector3Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedVector3Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedVector3Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector3Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector3Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedVector3Array, find, sarray("value", "from"), varray(0)); bind_method(PackedVector3Array, rfind, sarray("value", "from"), varray(-1)); @@ -3022,7 +3042,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedColorArray, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedColorArray, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedColorArray, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedColorArray, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedColorArray, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedColorArray, find, sarray("value", "from"), varray(0)); bind_method(PackedColorArray, rfind, sarray("value", "from"), varray(-1)); @@ -3049,7 +3070,8 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedVector4Array, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedVector4Array, duplicate, sarray(), varray()); #ifndef DISABLE_DEPRECATED - bind_compat_method(PackedVector4Array, duplicate, _duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector4Array, duplicate, _duplicate_bind_compat_112290, _VariantCall::_duplicate_bind_compat_112290, sarray(), varray()); + bind_compat_functionnc(PackedVector4Array, bsearch, _bsearch_bind_compat_112539, _VariantCall::_bsearch_bind_compat_112539, sarray("value", "before"), varray(true)); #endif bind_method(PackedVector4Array, find, sarray("value", "from"), varray(0)); bind_method(PackedVector4Array, rfind, sarray("value", "from"), varray(-1)); diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml index 7d054608d00..3b77d82c6f7 100644 --- a/doc/classes/PackedByteArray.xml +++ b/doc/classes/PackedByteArray.xml @@ -47,7 +47,7 @@ Appends a [PackedByteArray] at the end of this array. - + diff --git a/doc/classes/PackedColorArray.xml b/doc/classes/PackedColorArray.xml index 2dabfb5dee6..c47cdedbc25 100644 --- a/doc/classes/PackedColorArray.xml +++ b/doc/classes/PackedColorArray.xml @@ -51,7 +51,7 @@ Appends a [PackedColorArray] at the end of this array. - + diff --git a/doc/classes/PackedFloat32Array.xml b/doc/classes/PackedFloat32Array.xml index 625172d5644..1bd4f560c00 100644 --- a/doc/classes/PackedFloat32Array.xml +++ b/doc/classes/PackedFloat32Array.xml @@ -47,7 +47,7 @@ Appends a [PackedFloat32Array] at the end of this array. - + diff --git a/doc/classes/PackedFloat64Array.xml b/doc/classes/PackedFloat64Array.xml index 55c576664a4..8bb5c7e5efc 100644 --- a/doc/classes/PackedFloat64Array.xml +++ b/doc/classes/PackedFloat64Array.xml @@ -48,7 +48,7 @@ Appends a [PackedFloat64Array] at the end of this array. - + diff --git a/doc/classes/PackedInt32Array.xml b/doc/classes/PackedInt32Array.xml index 86c3a5b9ef8..fadeab70350 100644 --- a/doc/classes/PackedInt32Array.xml +++ b/doc/classes/PackedInt32Array.xml @@ -47,7 +47,7 @@ Appends a [PackedInt32Array] at the end of this array. - + diff --git a/doc/classes/PackedInt64Array.xml b/doc/classes/PackedInt64Array.xml index 73e6c0e8794..e512060375a 100644 --- a/doc/classes/PackedInt64Array.xml +++ b/doc/classes/PackedInt64Array.xml @@ -48,7 +48,7 @@ Appends a [PackedInt64Array] at the end of this array. - + diff --git a/doc/classes/PackedStringArray.xml b/doc/classes/PackedStringArray.xml index 4f84ba82435..d6a3052dbe0 100644 --- a/doc/classes/PackedStringArray.xml +++ b/doc/classes/PackedStringArray.xml @@ -54,7 +54,7 @@ Appends a [PackedStringArray] at the end of this array. - + diff --git a/doc/classes/PackedVector2Array.xml b/doc/classes/PackedVector2Array.xml index 1fa4a989169..aca043cac7d 100644 --- a/doc/classes/PackedVector2Array.xml +++ b/doc/classes/PackedVector2Array.xml @@ -52,7 +52,7 @@ Appends a [PackedVector2Array] at the end of this array. - + diff --git a/doc/classes/PackedVector3Array.xml b/doc/classes/PackedVector3Array.xml index 0a85d1ac682..13c321d92ce 100644 --- a/doc/classes/PackedVector3Array.xml +++ b/doc/classes/PackedVector3Array.xml @@ -51,7 +51,7 @@ Appends a [PackedVector3Array] at the end of this array. - + diff --git a/doc/classes/PackedVector4Array.xml b/doc/classes/PackedVector4Array.xml index 4bc43fe6ba5..97cc98a9d10 100644 --- a/doc/classes/PackedVector4Array.xml +++ b/doc/classes/PackedVector4Array.xml @@ -51,7 +51,7 @@ Appends a [PackedVector4Array] at the end of this array. - + diff --git a/misc/extension_api_validation/4.5-stable.expected b/misc/extension_api_validation/4.5-stable.expected index b3082400b3f..e7a86615fc4 100644 --- a/misc/extension_api_validation/4.5-stable.expected +++ b/misc/extension_api_validation/4.5-stable.expected @@ -86,7 +86,6 @@ Same enum is defined in SkeletonModifier3D which is a base class of SpringBoneSi GH-112290 --------- - Validate extension JSON: Error: Field 'builtin_classes/PackedByteArray/methods/duplicate': is_const changed value in new API, from false to true. Validate extension JSON: Error: Field 'builtin_classes/PackedColorArray/methods/duplicate': is_const changed value in new API, from false to true. Validate extension JSON: Error: Field 'builtin_classes/PackedFloat32Array/methods/duplicate': is_const changed value in new API, from false to true. @@ -113,3 +112,19 @@ GH-90411 Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/SplitContainer/methods/clamp_split_offset': arguments Optional argument added for index. Compatibility method registered. + + +GH-112539 +--------- +Validate extension JSON: Error: Field 'builtin_classes/PackedByteArray/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedColorArray/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedFloat32Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedFloat64Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedInt32Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedInt64Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedStringArray/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedVector2Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedVector3Array/methods/bsearch': is_const changed value in new API, from false to true. +Validate extension JSON: Error: Field 'builtin_classes/PackedVector4Array/methods/bsearch': is_const changed value in new API, from false to true. + +bsearch method made const. Compatibility methods registered.