summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-09-03 17:38:06 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-09-03 17:38:06 +0200
commit13a90e938f0e3ae567f7d7256e35c38bf744e59d (patch)
tree120e69941581aa607fcd43349f32666ea9d59d1b /core
parent514c564a8c855d798ec6b5a52860e5bca8d57bc9 (diff)
parent154049ce1792a6e12b990e0a414a6c084c3b91c5 (diff)
downloadredot-engine-13a90e938f0e3ae567f7d7256e35c38bf744e59d.tar.gz
Merge pull request #70096 from rune-scape/stringname-dict
StringName Dictionary keys
Diffstat (limited to 'core')
-rw-r--r--core/object/object.cpp10
-rw-r--r--core/variant/dictionary.cpp17
-rw-r--r--core/variant/variant_construct.h9
-rw-r--r--core/variant/variant_setget.cpp4
4 files changed, 13 insertions, 27 deletions
diff --git a/core/object/object.cpp b/core/object/object.cpp
index 8b3ab40271..4be1dc4b34 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -605,7 +605,7 @@ Variant Object::_call_bind(const Variant **p_args, int p_argcount, Callable::Cal
return Variant();
}
- if (p_args[0]->get_type() != Variant::STRING_NAME && 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_NAME;
@@ -624,7 +624,7 @@ Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Call
return Variant();
}
- if (p_args[0]->get_type() != Variant::STRING_NAME && 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_NAME;
@@ -720,7 +720,7 @@ Variant Object::getvar(const Variant &p_key, bool *r_valid) const {
*r_valid = false;
}
- if (p_key.get_type() == Variant::STRING_NAME || p_key.get_type() == Variant::STRING) {
+ if (p_key.is_string()) {
return get(p_key, r_valid);
}
return Variant();
@@ -730,7 +730,7 @@ void Object::setvar(const Variant &p_key, const Variant &p_value, bool *r_valid)
if (r_valid) {
*r_valid = false;
}
- if (p_key.get_type() == Variant::STRING_NAME || p_key.get_type() == Variant::STRING) {
+ if (p_key.is_string()) {
return set(p_key, p_value, r_valid);
}
}
@@ -1104,7 +1104,7 @@ Error Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::Cal
ERR_FAIL_V(Error::ERR_INVALID_PARAMETER);
}
- if (unlikely(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING)) {
+ if (unlikely(!p_args[0]->is_string())) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::STRING_NAME;
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) {