2
0
Эх сурвалжийг харах

add pop_back/pop_front/push_back/push_front to array, to make it according to doc, fixes #3040

Juan Linietsky 9 жил өмнө
parent
commit
b191e740d2
3 өөрчлөгдсөн 29 нэмэгдсэн , 1 устгасан
  1. 18 0
      core/array.cpp
  2. 5 1
      core/array.h
  3. 6 0
      core/variant_call.cpp

+ 18 - 0
core/array.cpp

@@ -222,6 +222,24 @@ void Array::invert(){
 }
 
 
+void Array::push_front(const Variant& p_value) {
+
+	_p->array.insert(0,p_value);
+}
+
+void Array::pop_back(){
+
+	if (!_p->array.empty())
+		_p->array.resize( _p->array.size() -1 );
+
+}
+void Array::pop_front(){
+
+	if (!_p->array.empty())
+		_p->array.remove(0);
+
+}
+
 
 Array::Array(const Array& p_from) {
 

+ 5 - 1
core/array.h

@@ -53,7 +53,7 @@ public:
 	bool empty() const;
 	void clear();
 
-    bool is_shared() const;
+	bool is_shared() const;
 
 	bool operator==(const Array& p_array) const;
 
@@ -75,6 +75,10 @@ public:
 
 	void erase(const Variant& p_value);
 
+	void push_front(const Variant& p_value);
+	void pop_back();
+	void pop_front();
+
 	Array(const Array& p_from);
 	Array(bool p_shared=false);
 	~Array();

+ 6 - 0
core/variant_call.cpp

@@ -450,6 +450,9 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM0(Array,clear);
 	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_LOCALMEM1(Array,append);
 	VCALL_LOCALMEM1(Array,resize);
 	VCALL_LOCALMEM2(Array,insert);
@@ -492,6 +495,9 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM2(ByteArray,set);
 	VCALL_LOCALMEM1R(ByteArray,get);
 	VCALL_LOCALMEM1(ByteArray,push_back);
+	VCALL_LOCALMEM1(ByteArray,push_front);
+	VCALL_LOCALMEM0(ByteArray,pop_back);
+	VCALL_LOCALMEM0(ByteArray,pop_front);
 	VCALL_LOCALMEM1(ByteArray,resize);
 	VCALL_LOCALMEM1(ByteArray,append);
 	VCALL_LOCALMEM1(ByteArray,append_array);