Merge pull request #82497 from Repiteo/typed-array-consolidation

Typed array equality operator update
This commit is contained in:
Thaddeus Crews 2025-05-13 16:22:15 -05:00
commit 243c8932d3
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
4 changed files with 11 additions and 7 deletions

View file

@ -44,6 +44,7 @@ struct ContainerType;
class Array {
mutable ArrayPrivate *_p;
void _ref(const Array &p_from) const;
void _unref() const;
public:
@ -109,8 +110,6 @@ public:
ConstIterator begin() const;
ConstIterator end() const;
void _ref(const Array &p_from) const;
Variant &operator[](int p_idx);
const Variant &operator[](int p_idx) const;

View file

@ -42,7 +42,7 @@ class TypedArray : public Array {
public:
_FORCE_INLINE_ void operator=(const Array &p_array) {
ERR_FAIL_COND_MSG(!is_same_typed(p_array), "Cannot assign an array with a different element type.");
_ref(p_array);
Array::operator=(p_array);
}
_FORCE_INLINE_ TypedArray(const Variant &p_variant) :
TypedArray(Array(p_variant)) {
@ -50,7 +50,7 @@ public:
_FORCE_INLINE_ TypedArray(const Array &p_array) {
set_typed(Variant::OBJECT, T::get_class_static(), Variant());
if (is_same_typed(p_array)) {
_ref(p_array);
Array::operator=(p_array);
} else {
assign(p_array);
}
@ -81,7 +81,7 @@ struct VariantInternalAccessor<const TypedArray<T> &> {
public: \
_FORCE_INLINE_ void operator=(const Array &p_array) { \
ERR_FAIL_COND_MSG(!is_same_typed(p_array), "Cannot assign an array with a different element type."); \
_ref(p_array); \
Array::operator=(p_array); \
} \
_FORCE_INLINE_ TypedArray(std::initializer_list<Variant> p_init) : \
Array(Array(p_init), m_variant_type, StringName(), Variant()) { \
@ -92,7 +92,7 @@ struct VariantInternalAccessor<const TypedArray<T> &> {
_FORCE_INLINE_ TypedArray(const Array &p_array) { \
set_typed(m_variant_type, StringName(), Variant()); \
if (is_same_typed(p_array)) { \
_ref(p_array); \
Array::operator=(p_array); \
} else { \
assign(p_array); \
} \