[Bf-blender-cvs] [b240b8e] master: Freestyle: reserve array sizes before filling

Campbell Barton noreply at git.blender.org
Sun Jan 4 11:23:45 CET 2015


Commit: b240b8e23115fe99f47ee5b3fd66fd3796ff8a1b
Author: Campbell Barton
Date:   Sun Jan 4 21:20:45 2015 +1100
Branches: master
https://developer.blender.org/rBb240b8e23115fe99f47ee5b3fd66fd3796ff8a1b

Freestyle: reserve array sizes before filling

also use PyList_GET_ITEM when list size is known.

===================================================================

M	source/blender/freestyle/intern/python/BPy_Operators.cpp
M	source/blender/freestyle/intern/python/BPy_ViewShape.cpp
M	source/blender/freestyle/intern/python/Director.cpp
M	source/gameengine/Expressions/ListValue.cpp
M	source/gameengine/Expressions/Value.cpp
M	source/gameengine/Ketsji/KX_MouseActuator.cpp

===================================================================

diff --git a/source/blender/freestyle/intern/python/BPy_Operators.cpp b/source/blender/freestyle/intern/python/BPy_Operators.cpp
index d3cb44f..57ec15f 100644
--- a/source/blender/freestyle/intern/python/BPy_Operators.cpp
+++ b/source/blender/freestyle/intern/python/BPy_Operators.cpp
@@ -532,8 +532,9 @@ static PyObject *Operators_create(BPy_Operators *self, PyObject *args, PyObject
 		return NULL;
 	}
 	vector<StrokeShader *> shaders;
+	shaders.reserve(PyList_Size(obj2));
 	for (int i = 0; i < PyList_Size(obj2); i++) {
-		PyObject *py_ss = PyList_GetItem(obj2, i);
+		PyObject *py_ss = PyList_GET_ITEM(obj2, i);
 		if (!BPy_StrokeShader_Check(py_ss)) {
 			PyErr_SetString(PyExc_TypeError, "Operators.create(): 2nd argument must be a list of StrokeShader objects");
 			return NULL;
diff --git a/source/blender/freestyle/intern/python/BPy_ViewShape.cpp b/source/blender/freestyle/intern/python/BPy_ViewShape.cpp
index 1007320..6c6e821 100644
--- a/source/blender/freestyle/intern/python/BPy_ViewShape.cpp
+++ b/source/blender/freestyle/intern/python/BPy_ViewShape.cpp
@@ -228,8 +228,10 @@ static int ViewShape_vertices_set(BPy_ViewShape *self, PyObject *value, void *UN
 		PyErr_SetString(PyExc_TypeError, "value must be a list of ViewVertex objects");
 		return -1;
 	}
-	for (int i = 0; i < PyList_Size(list); i++) {
-		item = PyList_GetItem(list, i);
+
+	v.reserve(PyList_Size(list));
+	for (unsigned int i = 0; i < PyList_Size(list); i++) {
+		item = PyList_GET_ITEM(list, i);
 		if (BPy_ViewVertex_Check(item)) {
 			v.push_back(((BPy_ViewVertex *)item)->vv);
 		}
@@ -270,8 +272,10 @@ static int ViewShape_edges_set(BPy_ViewShape *self, PyObject *value, void *UNUSE
 		PyErr_SetString(PyExc_TypeError, "value must be a list of ViewEdge objects");
 		return -1;
 	}
+
+	v.reserve(PyList_Size(list));
 	for (int i = 0; i < PyList_Size(list); i++) {
-		item = PyList_GetItem(list, i);
+		item = PyList_GET_ITEM(list, i);
 		if (BPy_ViewEdge_Check(item)) {
 			v.push_back(((BPy_ViewEdge *)item)->ve);
 		}
diff --git a/source/blender/freestyle/intern/python/Director.cpp b/source/blender/freestyle/intern/python/Director.cpp
index 653fd0b..9f85e84 100644
--- a/source/blender/freestyle/intern/python/Director.cpp
+++ b/source/blender/freestyle/intern/python/Director.cpp
@@ -265,8 +265,9 @@ int Director_BPy_UnaryFunction0D___call__(void *uf0D, void *py_uf0D, Interface0D
 	}
 	else if (BPy_UnaryFunction0DVectorViewShape_Check(obj)) {
 		vector<ViewShape*> vec;
+		vec.reserve(PyList_Size(result));
 		for (int i = 0; i < PyList_Size(result); i++) {
-			ViewShape *b = ((BPy_ViewShape *)PyList_GetItem(result, i))->vs;
+			ViewShape *b = ((BPy_ViewShape *)PyList_GET_ITEM(result, i))->vs;
 			vec.push_back(b);
 		}
 		((UnaryFunction0D< vector<ViewShape*> > *)uf0D)->result = vec;
@@ -318,8 +319,9 @@ int Director_BPy_UnaryFunction1D___call__(void *uf1D, void *py_uf1D, Interface1D
 	}
 	else if (BPy_UnaryFunction1DVectorViewShape_Check(obj)) {
 		vector<ViewShape*> vec;
+		vec.reserve(PyList_Size(result));
 		for (int i = 1; i < PyList_Size(result); i++) {
-			ViewShape *b = ((BPy_ViewShape *)PyList_GetItem(result, i))->vs;
+			ViewShape *b = ((BPy_ViewShape *)PyList_GET_ITEM(result, i))->vs;
 			vec.push_back(b);
 		}
 		((UnaryFunction1D< vector<ViewShape*> > *)uf1D)->result = vec;
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index 75e3b49..5e0eb92 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -432,7 +432,7 @@ static PyObject *listvalue_buffer_concat(PyObject *self, PyObject *other)
 		
 		for (i=0;i<numitems;i++)
 		{
-			listitemval = listval->ConvertPythonToValue(PyList_GetItem(other,i), true, "cList + pyList: CListValue, ");
+			listitemval = listval->ConvertPythonToValue(PyList_GET_ITEM(other, i), true, "cList + pyList: CListValue, ");
 			
 			if (listitemval) {
 				listval_new->SetValue(i+numitems_orig, listitemval);
diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp
index bdef2db..286db01 100644
--- a/source/gameengine/Expressions/Value.cpp
+++ b/source/gameengine/Expressions/Value.cpp
@@ -568,7 +568,7 @@ CValue *CValue::ConvertPythonToValue(PyObject *pyobj, const bool do_type_excepti
 		Py_ssize_t numitems = PyList_GET_SIZE(pyobj);
 		for (i=0;i<numitems;i++)
 		{
-			PyObject *listitem = PyList_GetItem(pyobj,i); /* borrowed ref */
+			PyObject *listitem = PyList_GET_ITEM(pyobj,i); /* borrowed ref */
 			CValue* listitemval = ConvertPythonToValue(listitem, error_prefix);
 			if (listitemval)
 			{
diff --git a/source/gameengine/Ketsji/KX_MouseActuator.cpp b/source/gameengine/Ketsji/KX_MouseActuator.cpp
index aae5d18..74b3d09 100644
--- a/source/gameengine/Ketsji/KX_MouseActuator.cpp
+++ b/source/gameengine/Ketsji/KX_MouseActuator.cpp
@@ -399,8 +399,8 @@ int KX_MouseActuator::pyattr_set_limit_x(void *self_v, const KX_PYATTRIBUTE_DEF
 	if (PyList_Size(value) != 2)
 		return PY_SET_ATTR_FAIL;
 
-	item1 = PyList_GetItem(value, 0);
-	item2 = PyList_GetItem(value, 1);
+	item1 = PyList_GET_ITEM(value, 0);
+	item2 = PyList_GET_ITEM(value, 1);
 
 	if (!(PyFloat_Check(item1)) || !(PyFloat_Check(item2))) {
 		return PY_SET_ATTR_FAIL;
@@ -430,8 +430,8 @@ int KX_MouseActuator::pyattr_set_limit_y(void *self_v, const KX_PYATTRIBUTE_DEF
 	if (PyList_Size(value) != 2)
 		return PY_SET_ATTR_FAIL;
 
-	item1 = PyList_GetItem(value, 0);
-	item2 = PyList_GetItem(value, 1);
+	item1 = PyList_GET_ITEM(value, 0);
+	item2 = PyList_GET_ITEM(value, 1);
 
 	if (!(PyFloat_Check(item1)) || !(PyFloat_Check(item2))) {
 		return PY_SET_ATTR_FAIL;
@@ -461,8 +461,8 @@ int KX_MouseActuator::pyattr_set_angle(void *self_v, const KX_PYATTRIBUTE_DEF *a
 	if (PyList_Size(value) != 2)
 		return PY_SET_ATTR_FAIL;
 
-	item1 = PyList_GetItem(value, 0);
-	item2 = PyList_GetItem(value, 1);
+	item1 = PyList_GET_ITEM(value, 0);
+	item2 = PyList_GET_ITEM(value, 1);
 
 	if (!(PyFloat_Check(item1)) || !(PyFloat_Check(item2))) {
 		return PY_SET_ATTR_FAIL;




More information about the Bf-blender-cvs mailing list