[3.x] Add a get_or_add method to Dictionary
Co-authored-by: Aaron Franke <arnfranke@yahoo.com>
This commit is contained in:
@ -116,6 +116,15 @@ Variant Dictionary::get(const Variant &p_key, const Variant &p_default) const {
|
||||
return *result;
|
||||
}
|
||||
|
||||
Variant Dictionary::get_or_add(const Variant &p_key, const Variant &p_default) {
|
||||
const Variant *result = getptr(p_key);
|
||||
if (!result) {
|
||||
operator[](p_key) = p_default;
|
||||
return p_default;
|
||||
}
|
||||
return *result;
|
||||
}
|
||||
|
||||
int Dictionary::size() const {
|
||||
return _p->variant_map.size();
|
||||
}
|
||||
|
||||
@ -58,6 +58,7 @@ public:
|
||||
|
||||
Variant get_valid(const Variant &p_key) const;
|
||||
Variant get(const Variant &p_key, const Variant &p_default) const;
|
||||
Variant get_or_add(const Variant &p_key, const Variant &p_default);
|
||||
|
||||
int size() const;
|
||||
bool empty() const;
|
||||
|
||||
@ -559,6 +559,7 @@ struct _VariantCall {
|
||||
VCALL_LOCALMEM0R(Dictionary, values);
|
||||
VCALL_LOCALMEM1R(Dictionary, duplicate);
|
||||
VCALL_LOCALMEM2R(Dictionary, get);
|
||||
VCALL_LOCALMEM2R(Dictionary, get_or_add);
|
||||
|
||||
VCALL_LOCALMEM2(Array, set);
|
||||
VCALL_LOCALMEM1R(Array, get);
|
||||
@ -1944,6 +1945,7 @@ void register_variant_methods() {
|
||||
ADDFUNC0R(DICTIONARY, ARRAY, Dictionary, values, varray());
|
||||
ADDFUNC1R(DICTIONARY, DICTIONARY, Dictionary, duplicate, BOOL, "deep", varray(false));
|
||||
ADDFUNC2R(DICTIONARY, NIL, Dictionary, get, NIL, "key", NIL, "default", varray(Variant()));
|
||||
ADDFUNC2R(DICTIONARY, NIL, Dictionary, get_or_add, NIL, "key", NIL, "default", varray(Variant()));
|
||||
|
||||
ADDFUNC0R(ARRAY, INT, Array, size, varray());
|
||||
ADDFUNC0R(ARRAY, BOOL, Array, empty, varray());
|
||||
|
||||
Reference in New Issue
Block a user