Browse Source

Add Array.front() and Array.back()

(cherry picked from commit bf4fda64fd403d589278919cff01c3207164207e)
Kazuo256 8 years ago
parent
commit
b56c00cc56
4 changed files with 31 additions and 0 deletions
  1. 10 0
      core/array.cpp
  2. 3 0
      core/array.h
  3. 4 0
      core/variant_call.cpp
  4. 14 0
      doc/base/classes.xml

+ 10 - 0
core/array.cpp

@@ -150,6 +150,16 @@ void Array::erase(const Variant& p_value) {
 	_p->array.erase(p_value);
 }
 
+Variant Array::front() const {
+	ERR_FAIL_COND_V(_p->array.size() == 0, Variant());
+	return operator[](0);
+}
+
+Variant Array::back() const {
+	ERR_FAIL_COND_V(_p->array.size() == 0, Variant());
+	return operator[](_p->array.size() - 1);
+}
+
 int Array::find(const Variant& p_value, int p_from) const {
 
 	return _p->array.find(p_value, p_from);

+ 3 - 0
core/array.h

@@ -67,6 +67,9 @@ public:
 	void insert(int p_pos, const Variant& p_value);
 	void remove(int p_pos);
 
+	Variant front() const;
+	Variant back() const;
+
 	void sort();
 	void sort_custom(Object *p_obj,const StringName& p_function);
 	void invert();

+ 4 - 0
core/variant_call.cpp

@@ -472,6 +472,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM1(Array,resize);
 	VCALL_LOCALMEM2(Array,insert);
 	VCALL_LOCALMEM1(Array,remove);
+	VCALL_LOCALMEM0R(Array,front);
+	VCALL_LOCALMEM0R(Array,back);
 	VCALL_LOCALMEM2R(Array,find);
 	VCALL_LOCALMEM2R(Array,rfind);
 	VCALL_LOCALMEM1R(Array,find_last);
@@ -1517,6 +1519,8 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
 	ADDFUNC2(ARRAY,NIL,Array,insert,INT,"pos",NIL,"value",varray());
 	ADDFUNC1(ARRAY,NIL,Array,remove,INT,"pos",varray());
 	ADDFUNC1(ARRAY,NIL,Array,erase,NIL,"value",varray());
+	ADDFUNC0(ARRAY,NIL,Array,front,varray());
+	ADDFUNC0(ARRAY,NIL,Array,back,varray());
 	ADDFUNC2(ARRAY,INT,Array,find,NIL,"what",INT,"from",varray(0));
 	ADDFUNC2(ARRAY,INT,Array,rfind,NIL,"what",INT,"from",varray(-1));
 	ADDFUNC1(ARRAY,INT,Array,find_last,NIL,"value",varray());

+ 14 - 0
doc/base/classes.xml

@@ -4640,6 +4640,20 @@
 				Remove the first occurrence of a value from the array.
 			</description>
 		</method>
+		<method name="front">
+			<return type="Variant">
+			</return>
+			<description>
+				Returns the first element of the array if the array is not empty (size>0).
+			</description>
+		</method>
+		<method name="back">
+			<return type="Variant">
+			</return>
+			<description>
+				Returns the last element of the array if the array is not empty (size>0).
+			</description>
+		</method>
 		<method name="find">
 			<return type="int">
 			</return>