From a8ebd43ab7d246669f1a8bb30fb780c07abe01d6 Mon Sep 17 00:00:00 2001 From: Alexander Holland Date: Mon, 4 Apr 2016 18:37:43 +0200 Subject: [PATCH] dictionary has_all --- core/dictionary.cpp | 10 ++++++++++ core/dictionary.h | 2 ++ core/variant_call.cpp | 2 ++ 3 files changed, 14 insertions(+) diff --git a/core/dictionary.cpp b/core/dictionary.cpp index a013c21b299..75c8531251d 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;ivariant_map.erase(p_key); diff --git a/core/dictionary.h b/core/dictionary.h index 145e7e5c84b..c854e95ee60 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 78814c83e20..a4963f0d1f6 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());