Add reserve() to Dictionary, apply to constructors on GDScript VM

This commit is contained in:
DeeJayLSP 2025-09-23 16:57:52 -03:00
parent aa2c4fe654
commit 8a7a0faa75
3 changed files with 10 additions and 2 deletions

View file

@ -299,6 +299,12 @@ void Dictionary::_ref(const Dictionary &p_from) const {
_p = p_from._p;
}
void Dictionary::reserve(int p_new_capacity) {
ERR_FAIL_COND_MSG(_p->read_only, "Dictionary is in read-only state.");
ERR_FAIL_COND_MSG(p_new_capacity < 0, "New capacity must be non-negative.");
_p->variant_map.reserve(p_new_capacity);
}
void Dictionary::clear() {
ERR_FAIL_COND_MSG(_p->read_only, "Dictionary is in read-only state.");
_p->variant_map.clear();
@ -607,6 +613,7 @@ Dictionary Dictionary::recursive_duplicate(bool p_deep, ResourceDeepDuplicateMod
return n;
}
n.reserve(_p->variant_map.size());
if (p_deep) {
bool is_call_chain_end = recursion_count == 0;

View file

@ -74,6 +74,7 @@ public:
int size() const;
bool is_empty() const;
void reserve(int p_new_capacity);
void clear();
void sort();
void merge(const Dictionary &p_dictionary, bool p_overwrite = false);