summaryrefslogtreecommitdiffstats
path: root/core/variant/variant_setget.cpp
diff options
context:
space:
mode:
authorGeorge Marques <george@gmarqu.es>2020-11-20 15:51:28 -0300
committerGeorge Marques <george@gmarqu.es>2020-11-20 15:55:17 -0300
commit8a9e3524a9128d71b78718d2ba1081d5ad34a050 (patch)
treee29e3861c800c26cfd9c368dc8bbec71c6b98674 /core/variant/variant_setget.cpp
parent48049b8d9e3830ddea5c6844997d928871c16d27 (diff)
downloadredot-engine-8a9e3524a9128d71b78718d2ba1081d5ad34a050.tar.gz
Fix variant getters not setting return type
The validated getters were only setting the value without changing the type, leading to wrong results. This uses the same path used for methods to the same purpose.
Diffstat (limited to 'core/variant/variant_setget.cpp')
-rw-r--r--core/variant/variant_setget.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/variant/variant_setget.cpp b/core/variant/variant_setget.cpp
index 05fe2b80d9..59dde707c7 100644
--- a/core/variant/variant_setget.cpp
+++ b/core/variant/variant_setget.cpp
@@ -44,6 +44,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_member; \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_member; \
} \
static void ptr_get(const void *base, void *member) { \
@@ -74,6 +75,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_member; \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_member; \
} \
static void ptr_get(const void *base, void *member) { \
@@ -107,6 +109,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_custom; \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_custom; \
} \
static void ptr_get(const void *base, void *member) { \
@@ -137,6 +140,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_custom; \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_custom; \
} \
static void ptr_get(const void *base, void *member) { \
@@ -170,6 +174,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(); \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(); \
} \
static void ptr_get(const void *base, void *member) { \
@@ -200,6 +205,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(); \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(); \
} \
static void ptr_get(const void *base, void *member) { \
@@ -233,6 +239,7 @@
*member = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(m_index); \
} \
static void validated_get(const Variant *base, Variant *member) { \
+ VariantTypeAdjust<m_member_type>::adjust(member); \
*VariantGetInternalPtr<m_member_type>::get_ptr(member) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_getter(m_index); \
} \
static void ptr_get(const void *base, void *member) { \
@@ -617,6 +624,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
oob = true; \
return; \
} \
+ VariantTypeAdjust<m_elem_type>::adjust(value); \
*VariantGetInternalPtr<m_elem_type>::get_ptr(value) = (*VariantGetInternalPtr<m_base_type>::get_ptr(base))[index]; \
oob = false; \
} \
@@ -694,6 +702,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
oob = true; \
return; \
} \
+ VariantTypeAdjust<m_elem_type>::adjust(value); \
*VariantGetInternalPtr<m_elem_type>::get_ptr(value) = (*VariantGetInternalPtr<m_base_type>::get_ptr(base))[index]; \
oob = false; \
} \
@@ -768,6 +777,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
oob = true; \
return; \
} \
+ VariantTypeAdjust<m_elem_type>::adjust(value); \
*VariantGetInternalPtr<m_elem_type>::get_ptr(value) = (*VariantGetInternalPtr<m_base_type>::get_ptr(base))[index]; \
oob = false; \
} \
@@ -830,6 +840,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
oob = true; \
return; \
} \
+ VariantTypeAdjust<m_elem_type>::adjust(value); \
*VariantGetInternalPtr<m_elem_type>::get_ptr(value) = (*VariantGetInternalPtr<m_base_type>::get_ptr(base))m_accessor[index]; \
oob = false; \
} \
@@ -886,6 +897,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
oob = true; \
return; \
} \
+ VariantTypeAdjust<m_elem_type>::adjust(value); \
*VariantGetInternalPtr<m_elem_type>::get_ptr(value) = VariantGetInternalPtr<m_base_type>::get_ptr(base)->m_get(index); \
oob = false; \
} \