diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-03 17:38:06 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-03 17:38:06 +0200 |
commit | 13a90e938f0e3ae567f7d7256e35c38bf744e59d (patch) | |
tree | 120e69941581aa607fcd43349f32666ea9d59d1b /core/variant | |
parent | 514c564a8c855d798ec6b5a52860e5bca8d57bc9 (diff) | |
parent | 154049ce1792a6e12b990e0a414a6c084c3b91c5 (diff) | |
download | redot-engine-13a90e938f0e3ae567f7d7256e35c38bf744e59d.tar.gz |
Merge pull request #70096 from rune-scape/stringname-dict
StringName Dictionary keys
Diffstat (limited to 'core/variant')
-rw-r--r-- | core/variant/dictionary.cpp | 17 | ||||
-rw-r--r-- | core/variant/variant_construct.h | 9 | ||||
-rw-r--r-- | core/variant/variant_setget.cpp | 4 |
3 files changed, 8 insertions, 22 deletions
diff --git a/core/variant/dictionary.cpp b/core/variant/dictionary.cpp index 7416101d51..733d13a106 100644 --- a/core/variant/dictionary.cpp +++ b/core/variant/dictionary.cpp @@ -81,15 +81,7 @@ Variant Dictionary::get_value_at_index(int p_index) const { Variant &Dictionary::operator[](const Variant &p_key) { if (unlikely(_p->read_only)) { - if (p_key.get_type() == Variant::STRING_NAME) { - const StringName *sn = VariantInternal::get_string_name(&p_key); - const String &key = sn->operator String(); - if (likely(_p->variant_map.has(key))) { - *_p->read_only = _p->variant_map[key]; - } else { - *_p->read_only = Variant(); - } - } else if (likely(_p->variant_map.has(p_key))) { + if (likely(_p->variant_map.has(p_key))) { *_p->read_only = _p->variant_map[p_key]; } else { *_p->read_only = Variant(); @@ -97,12 +89,7 @@ Variant &Dictionary::operator[](const Variant &p_key) { return *_p->read_only; } else { - if (p_key.get_type() == Variant::STRING_NAME) { - const StringName *sn = VariantInternal::get_string_name(&p_key); - return _p->variant_map[sn->operator String()]; - } else { - return _p->variant_map[p_key]; - } + return _p->variant_map[p_key]; } } diff --git a/core/variant/variant_construct.h b/core/variant/variant_construct.h index 5afdb884f6..a46fadb198 100644 --- a/core/variant/variant_construct.h +++ b/core/variant/variant_construct.h @@ -232,7 +232,7 @@ template <typename T> class VariantConstructorFromString { public: static void construct(Variant &r_ret, const Variant **p_args, Callable::CallError &r_error) { - if (p_args[0]->get_type() != Variant::STRING) { + if (!p_args[0]->is_string()) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = 0; r_error.expected = Variant::STRING; @@ -240,7 +240,7 @@ public: } VariantTypeChanger<T>::change(&r_ret); - const String &src_str = *VariantGetInternalPtr<String>::get_ptr(p_args[0]); + const String src_str = *p_args[0]; if (r_ret.get_type() == Variant::Type::INT) { r_ret = src_str.to_int(); @@ -417,7 +417,7 @@ public: return; } - if (p_args[2]->get_type() != Variant::STRING_NAME) { + if (!p_args[2]->is_string()) { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = 2; r_error.expected = Variant::STRING_NAME; @@ -426,8 +426,7 @@ public: const Array &base_arr = *VariantGetInternalPtr<Array>::get_ptr(p_args[0]); const uint32_t type = p_args[1]->operator uint32_t(); - const StringName &class_name = *VariantGetInternalPtr<StringName>::get_ptr(p_args[2]); - r_ret = Array(base_arr, type, class_name, *p_args[3]); + r_ret = Array(base_arr, type, *p_args[2], *p_args[3]); } static inline void validated_construct(Variant *r_ret, const Variant **p_args) { diff --git a/core/variant/variant_setget.cpp b/core/variant/variant_setget.cpp index 48176163a1..0cd4b86fe7 100644 --- a/core/variant/variant_setget.cpp +++ b/core/variant/variant_setget.cpp @@ -1288,8 +1288,8 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const { List<Variant> keys; dic->get_key_list(&keys); for (const Variant &E : keys) { - if (E.get_type() == Variant::STRING) { - p_list->push_back(PropertyInfo(Variant::STRING, E)); + if (E.is_string()) { + p_list->push_back(PropertyInfo(dic->get_valid(E).get_type(), E)); } } } else if (type == OBJECT) { |