diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-04-11 20:59:35 +0200 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-04-11 20:59:35 +0200 |
commit | 89fcd529f3966a2f4977402f9d8f1ec25dfeb53e (patch) | |
tree | e8a79d21b2e458d27f2126126b391b911e1efcb4 /core | |
parent | 7d1b4567b07ac4d88bca58f70b773dd996d0cae6 (diff) | |
parent | a8ebd43ab7d246669f1a8bb30fb780c07abe01d6 (diff) |
Merge pull request #4223 from AlexHolly/dictionary-has-all
dictionary has_all
Diffstat (limited to 'core')
-rw-r--r-- | core/dictionary.cpp | 10 | ||||
-rw-r--r-- | core/dictionary.h | 2 | ||||
-rw-r--r-- | core/variant_call.cpp | 2 |
3 files changed, 14 insertions, 0 deletions
diff --git a/core/dictionary.cpp b/core/dictionary.cpp index a013c21b29..75c8531251 100644 --- a/core/dictionary.cpp +++ b/core/dictionary.cpp @@ -110,6 +110,16 @@ bool Dictionary::has(const Variant& p_key) const { return _p->variant_map.has(p_key); } + +bool Dictionary::has_all(const Array& p_keys) const { + for (int i=0;i<p_keys.size();i++) { + if( !has(p_keys[i]) ) { + return false; + } + } + return true; +} + void Dictionary::erase(const Variant& p_key) { _copy_on_write(); _p->variant_map.erase(p_key); diff --git a/core/dictionary.h b/core/dictionary.h index 145e7e5c84..c854e95ee6 100644 --- a/core/dictionary.h +++ b/core/dictionary.h @@ -69,6 +69,8 @@ public: bool is_shared() const; bool has(const Variant& p_key) const; + bool has_all(const Array& p_keys) const; + void erase(const Variant& p_key); bool operator==(const Dictionary& p_dictionary) const; diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 78814c83e2..a4963f0d1f 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -440,6 +440,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM0R(Dictionary,empty); VCALL_LOCALMEM0(Dictionary,clear); VCALL_LOCALMEM1R(Dictionary,has); + VCALL_LOCALMEM1R(Dictionary,has_all); VCALL_LOCALMEM1(Dictionary,erase); VCALL_LOCALMEM0R(Dictionary,hash); VCALL_LOCALMEM0R(Dictionary,keys); @@ -1423,6 +1424,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC0(DICTIONARY,BOOL,Dictionary,empty,varray()); ADDFUNC0(DICTIONARY,NIL,Dictionary,clear,varray()); ADDFUNC1(DICTIONARY,BOOL,Dictionary,has,NIL,"value",varray()); + ADDFUNC1(DICTIONARY,BOOL,Dictionary,has_all,ARRAY,"values",varray()); ADDFUNC1(DICTIONARY,NIL,Dictionary,erase,NIL,"value",varray()); ADDFUNC0(DICTIONARY,INT,Dictionary,hash,varray()); ADDFUNC0(DICTIONARY,ARRAY,Dictionary,keys,varray()); |