diff options
author | Răzvan Cosmin Rădulescu <razvancosmin.radulescu@gmail.com> | 2016-08-27 17:33:45 +0200 |
---|---|---|
committer | Răzvan Cosmin Rădulescu <razvancosmin.radulescu@gmail.com> | 2016-09-11 17:37:21 +0200 |
commit | 1a7aae7443194f7d6137901af369c843b3911b4f (patch) | |
tree | e9ccf4f9a80590d6e27966536770f59fddb76628 | |
parent | c40ab446c9bcd5b28a073fea4113794bb701937b (diff) |
(Array) pop_front, pop_back return values
pop_front, pop_back now return values instead of `void`. Things
I didn't know how to properly implement:
1. pop_front & pop_back shows in the help menu Object as return value.
I know this is incorrect but if not Object than what? Cause it
can't be void. It needs to be a generic type that includes all the
Array types
-rw-r--r-- | core/array.cpp | 20 | ||||
-rw-r--r-- | core/array.h | 4 | ||||
-rw-r--r-- | core/variant_call.cpp | 4 |
3 files changed, 19 insertions, 9 deletions
diff --git a/core/array.cpp b/core/array.cpp index 23792f90fc..683a43e3d0 100644 --- a/core/array.cpp +++ b/core/array.cpp @@ -276,16 +276,26 @@ void Array::push_front(const Variant& p_value) { _p->array.insert(0,p_value); } -void Array::pop_back(){ +Variant Array::pop_back(){ - if (!_p->array.empty()) - _p->array.resize( _p->array.size() -1 ); + if (!_p->array.empty()) { + int n = _p->array.size() - 1; + Variant ret = _p->array.get(n); + _p->array.resize(n); + return ret; + } + return Variant(); } -void Array::pop_front(){ - if (!_p->array.empty()) +Variant Array::pop_front(){ + + if (!_p->array.empty()) { + Variant ret = _p->array.get(0); _p->array.remove(0); + return ret; + } + return Variant(); } diff --git a/core/array.h b/core/array.h index dfc902525c..eb79b0cf33 100644 --- a/core/array.h +++ b/core/array.h @@ -80,8 +80,8 @@ public: void erase(const Variant& p_value); void push_front(const Variant& p_value); - void pop_back(); - void pop_front(); + Variant pop_back(); + Variant pop_front(); Array(const Array& p_from); Array(bool p_shared=false); diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 8473fdcd19..f7bc38ac06 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -464,8 +464,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM0R(Array,hash); VCALL_LOCALMEM1(Array,push_back); VCALL_LOCALMEM1(Array,push_front); - VCALL_LOCALMEM0(Array,pop_back); - VCALL_LOCALMEM0(Array,pop_front); + VCALL_LOCALMEM0R(Array,pop_back); + VCALL_LOCALMEM0R(Array,pop_front); VCALL_LOCALMEM1(Array,append); VCALL_LOCALMEM1(Array,resize); VCALL_LOCALMEM2(Array,insert); |