From 2dcfa5acf93479b10a91c86b3615b0feadb1d23f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 24 Dec 2010 03:51:34 +0000 Subject: [PATCH] return typle for mathutils slice's. The main advantage with this is that its close to twice as fast to do 'vertex.co[:]' then 'tuple(vertex.co)', this is common for writing a vertex array. the correct python behavior in this case is to return a copy of the original type, however euler and quats don't support different sizes so we cant do so easily. --- source/blender/python/generic/mathutils_color.c | 10 +++++----- source/blender/python/generic/mathutils_euler.c | 10 +++++----- source/blender/python/generic/mathutils_matrix.c | 12 ++++++------ source/blender/python/generic/mathutils_quat.c | 12 ++++++------ source/blender/python/generic/mathutils_vector.c | 10 +++++----- 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/source/blender/python/generic/mathutils_color.c b/source/blender/python/generic/mathutils_color.c index 95030631d03..989821510de 100644 --- a/source/blender/python/generic/mathutils_color.c +++ b/source/blender/python/generic/mathutils_color.c @@ -213,7 +213,7 @@ static int Color_ass_item(ColorObject * self, int i, PyObject * value) //sequence slice (get) static PyObject *Color_slice(ColorObject * self, int begin, int end) { - PyObject *list = NULL; + PyObject *tuple; int count; if(!BaseMath_ReadCallback(self)) @@ -222,14 +222,14 @@ static PyObject *Color_slice(ColorObject * self, int begin, int end) CLAMP(begin, 0, COLOR_SIZE); if (end<0) end= (COLOR_SIZE + 1) + end; CLAMP(end, 0, COLOR_SIZE); - begin = MIN2(begin,end); + begin= MIN2(begin, end); - list = PyList_New(end - begin); + tuple= PyTuple_New(end - begin); for(count= begin; count < end; count++) { - PyList_SET_ITEM(list, count - begin, PyFloat_FromDouble(self->col[count])); + PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->col[count])); } - return list; + return tuple; } //----------------------------object[z:y]------------------------ //sequence slice (set) diff --git a/source/blender/python/generic/mathutils_euler.c b/source/blender/python/generic/mathutils_euler.c index 8699c476c0c..0474d30d29f 100644 --- a/source/blender/python/generic/mathutils_euler.c +++ b/source/blender/python/generic/mathutils_euler.c @@ -443,7 +443,7 @@ static int Euler_ass_item(EulerObject * self, int i, PyObject *value) //sequence slice (get) static PyObject *Euler_slice(EulerObject * self, int begin, int end) { - PyObject *list = NULL; + PyObject *tuple; int count; if(!BaseMath_ReadCallback(self)) @@ -452,14 +452,14 @@ static PyObject *Euler_slice(EulerObject * self, int begin, int end) CLAMP(begin, 0, EULER_SIZE); if (end<0) end= (EULER_SIZE + 1) + end; CLAMP(end, 0, EULER_SIZE); - begin = MIN2(begin,end); + begin= MIN2(begin, end); - list = PyList_New(end - begin); + tuple= PyTuple_New(end - begin); for(count = begin; count < end; count++) { - PyList_SET_ITEM(list, count - begin, PyFloat_FromDouble(self->eul[count])); + PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->eul[count])); } - return list; + return tuple; } //----------------------------object[z:y]------------------------ //sequence slice (set) diff --git a/source/blender/python/generic/mathutils_matrix.c b/source/blender/python/generic/mathutils_matrix.c index e75f888bc03..8b8e68b798c 100644 --- a/source/blender/python/generic/mathutils_matrix.c +++ b/source/blender/python/generic/mathutils_matrix.c @@ -1398,7 +1398,7 @@ static int Matrix_ass_item(MatrixObject * self, int i, PyObject * ob) static PyObject *Matrix_slice(MatrixObject * self, int begin, int end) { - PyObject *list = NULL; + PyObject *tuple; int count; if(!BaseMath_ReadCallback(self)) @@ -1406,16 +1406,16 @@ static PyObject *Matrix_slice(MatrixObject * self, int begin, int end) CLAMP(begin, 0, self->rowSize); CLAMP(end, 0, self->rowSize); - begin = MIN2(begin,end); + begin= MIN2(begin,end); - list = PyList_New(end - begin); - for(count = begin; count < end; count++) { - PyList_SET_ITEM(list, count - begin, + tuple= PyTuple_New(end - begin); + for(count= begin; count < end; count++) { + PyTuple_SET_ITEM(tuple, count - begin, newVectorObject_cb((PyObject *)self, self->colSize, mathutils_matrix_vector_cb_index, count)); } - return list; + return tuple; } /*----------------------------object[z:y]------------------------ sequence slice (set)*/ diff --git a/source/blender/python/generic/mathutils_quat.c b/source/blender/python/generic/mathutils_quat.c index 733e2b902c4..4dced9aaad1 100644 --- a/source/blender/python/generic/mathutils_quat.c +++ b/source/blender/python/generic/mathutils_quat.c @@ -480,7 +480,7 @@ static int Quaternion_ass_item(QuaternionObject * self, int i, PyObject * ob) //sequence slice (get) static PyObject *Quaternion_slice(QuaternionObject * self, int begin, int end) { - PyObject *list = NULL; + PyObject *tuple; int count; if(!BaseMath_ReadCallback(self)) @@ -489,14 +489,14 @@ static PyObject *Quaternion_slice(QuaternionObject * self, int begin, int end) CLAMP(begin, 0, QUAT_SIZE); if (end<0) end= (QUAT_SIZE + 1) + end; CLAMP(end, 0, QUAT_SIZE); - begin = MIN2(begin,end); + begin= MIN2(begin, end); - list = PyList_New(end - begin); - for(count = begin; count < end; count++) { - PyList_SET_ITEM(list, count - begin, PyFloat_FromDouble(self->quat[count])); + tuple= PyTuple_New(end - begin); + for(count= begin; count < end; count++) { + PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->quat[count])); } - return list; + return tuple; } //----------------------------object[z:y]------------------------ //sequence slice (set) diff --git a/source/blender/python/generic/mathutils_vector.c b/source/blender/python/generic/mathutils_vector.c index f64c591faca..7bf8eebb12d 100644 --- a/source/blender/python/generic/mathutils_vector.c +++ b/source/blender/python/generic/mathutils_vector.c @@ -807,7 +807,7 @@ static int Vector_ass_item(VectorObject *self, int i, PyObject * ob) sequence slice (get) */ static PyObject *Vector_slice(VectorObject *self, int begin, int end) { - PyObject *list = NULL; + PyObject *tuple; int count; if(!BaseMath_ReadCallback(self)) @@ -816,14 +816,14 @@ static PyObject *Vector_slice(VectorObject *self, int begin, int end) CLAMP(begin, 0, self->size); if (end<0) end= self->size+end+1; CLAMP(end, 0, self->size); - begin = MIN2(begin,end); + begin= MIN2(begin, end); - list = PyList_New(end - begin); + tuple= PyTuple_New(end - begin); for(count = begin; count < end; count++) { - PyList_SET_ITEM(list, count - begin, PyFloat_FromDouble(self->vec[count])); + PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->vec[count])); } - return list; + return tuple; } /*----------------------------object[z:y]------------------------ sequence slice (set) */