[Bf-blender-cvs] [8106a6b] master: mathutils: refactor instantiation

Campbell Barton noreply at git.blender.org
Sun Jan 4 07:47:01 CET 2015


Commit: 8106a6b75d45cc7472fd92f3b045697e30be8c73
Author: Campbell Barton
Date:   Sun Jan 4 17:03:54 2015 +1100
Branches: master
https://developer.blender.org/rB8106a6b75d45cc7472fd92f3b045697e30be8c73

mathutils: refactor instantiation

remove 'type' argument, very few mathutils objects are wrapped,
add new function for creating wrapped objects.

also fixes unlikely memory leak if the data-array can't be allocated.

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

M	source/blender/freestyle/intern/python/BPy_Convert.cpp
M	source/blender/freestyle/intern/python/BPy_Freestyle.cpp
M	source/blender/python/bmesh/bmesh_py_ops_call.c
M	source/blender/python/bmesh/bmesh_py_types.c
M	source/blender/python/bmesh/bmesh_py_types_customdata.c
M	source/blender/python/bmesh/bmesh_py_types_meshdata.c
M	source/blender/python/intern/bpy_rna.c
M	source/blender/python/mathutils/mathutils.c
M	source/blender/python/mathutils/mathutils.h
M	source/blender/python/mathutils/mathutils_Color.c
M	source/blender/python/mathutils/mathutils_Color.h
M	source/blender/python/mathutils/mathutils_Euler.c
M	source/blender/python/mathutils/mathutils_Euler.h
M	source/blender/python/mathutils/mathutils_Matrix.c
M	source/blender/python/mathutils/mathutils_Matrix.h
M	source/blender/python/mathutils/mathutils_Quaternion.c
M	source/blender/python/mathutils/mathutils_Quaternion.h
M	source/blender/python/mathutils/mathutils_Vector.c
M	source/blender/python/mathutils/mathutils_Vector.h
M	source/blender/python/mathutils/mathutils_geometry.c
M	source/blender/python/mathutils/mathutils_kdtree.c
M	source/blender/python/mathutils/mathutils_noise.c
M	source/gameengine/Converter/BL_ArmatureChannel.cpp
M	source/gameengine/Expressions/PyObjectPlus.cpp
M	source/gameengine/Ketsji/KXNetwork/CMakeLists.txt
M	source/gameengine/Ketsji/KXNetwork/SConscript
M	source/gameengine/Ketsji/KX_PyMath.cpp
M	source/gameengine/Network/CMakeLists.txt
M	source/gameengine/Network/SConscript

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

diff --git a/source/blender/freestyle/intern/python/BPy_Convert.cpp b/source/blender/freestyle/intern/python/BPy_Convert.cpp
index dbd836b..b0b43ac 100644
--- a/source/blender/freestyle/intern/python/BPy_Convert.cpp
+++ b/source/blender/freestyle/intern/python/BPy_Convert.cpp
@@ -81,7 +81,7 @@ PyObject *Vector_from_Vec2f(Vec2f& vec)
 	float vec_data[2]; // because vec->_coord is protected
 	vec_data[0] = vec.x();
 	vec_data[1] = vec.y();
-	return Vector_CreatePyObject(vec_data, 2, Py_NEW, NULL);
+	return Vector_CreatePyObject(vec_data, 2, NULL);
 }
 
 PyObject *Vector_from_Vec3f(Vec3f& vec)
@@ -90,7 +90,7 @@ PyObject *Vector_from_Vec3f(Vec3f& vec)
 	vec_data[0] = vec.x();
 	vec_data[1] = vec.y();
 	vec_data[2] = vec.z(); 
-	return Vector_CreatePyObject(vec_data, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(vec_data, 3, NULL);
 }
 
 PyObject *Vector_from_Vec3r(Vec3r& vec)
@@ -99,7 +99,7 @@ PyObject *Vector_from_Vec3r(Vec3r& vec)
 	vec_data[0] = vec.x();
 	vec_data[1] = vec.y();
 	vec_data[2] = vec.z();
-	return Vector_CreatePyObject(vec_data, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(vec_data, 3, NULL);
 }
 
 PyObject *BPy_Id_from_Id(Id& id)
diff --git a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp
index ee0e7df..f4ead30 100644
--- a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp
+++ b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp
@@ -153,7 +153,7 @@ static PyObject *Freestyle_blendRamp(PyObject *self, PyObject *args)
 		return NULL;
 	}
 	ramp_blend(type, a, fac, b);
-	return Vector_CreatePyObject(a, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(a, 3, NULL);
 }
 
 #include "BKE_texture.h" /* do_colorband() */
@@ -187,7 +187,7 @@ static PyObject *Freestyle_evaluateColorRamp(PyObject *self, PyObject *args)
 		PyErr_SetString(PyExc_ValueError, "failed to evaluate the color ramp");
 		return NULL;
 	}
-	return Vector_CreatePyObject(out, 4, Py_NEW, NULL);
+	return Vector_CreatePyObject(out, 4, NULL);
 }
 
 #include "DNA_color_types.h"
diff --git a/source/blender/python/bmesh/bmesh_py_ops_call.c b/source/blender/python/bmesh/bmesh_py_ops_call.c
index ec6810f..e8ef4c5 100644
--- a/source/blender/python/bmesh/bmesh_py_ops_call.c
+++ b/source/blender/python/bmesh/bmesh_py_ops_call.c
@@ -540,10 +540,10 @@ static PyObject *bpy_slot_to_py(BMesh *bm, BMOpSlot *slot)
 			item = PyFloat_FromDouble((double)BMO_SLOT_AS_FLOAT(slot));
 			break;
 		case BMO_OP_SLOT_MAT:
-			item = Matrix_CreatePyObject((float *)BMO_SLOT_AS_MATRIX(slot), 4, 4, Py_NEW, NULL);
+			item = Matrix_CreatePyObject((float *)BMO_SLOT_AS_MATRIX(slot), 4, 4, NULL);
 			break;
 		case BMO_OP_SLOT_VEC:
-			item = Vector_CreatePyObject(BMO_SLOT_AS_VECTOR(slot), slot->len, Py_NEW, NULL);
+			item = Vector_CreatePyObject(BMO_SLOT_AS_VECTOR(slot), slot->len, NULL);
 			break;
 		case BMO_OP_SLOT_PTR:
 			BLI_assert(0);  /* currently we don't have any pointer return values in use */
diff --git a/source/blender/python/bmesh/bmesh_py_types.c b/source/blender/python/bmesh/bmesh_py_types.c
index 8c13a66..d3f4bfc 100644
--- a/source/blender/python/bmesh/bmesh_py_types.c
+++ b/source/blender/python/bmesh/bmesh_py_types.c
@@ -342,7 +342,7 @@ PyDoc_STRVAR(bpy_bmvert_co_doc,
 static PyObject *bpy_bmvert_co_get(BPy_BMVert *self)
 {
 	BPY_BM_CHECK_OBJ(self);
-	return Vector_CreatePyObject(self->v->co, 3, Py_WRAP, NULL);
+	return Vector_CreatePyObject_wrap(self->v->co, 3, NULL);
 }
 
 static int bpy_bmvert_co_set(BPy_BMVert *self, PyObject *value)
@@ -364,7 +364,7 @@ PyDoc_STRVAR(bpy_bmvert_normal_doc,
 static PyObject *bpy_bmvert_normal_get(BPy_BMVert *self)
 {
 	BPY_BM_CHECK_OBJ(self);
-	return Vector_CreatePyObject(self->v->no, 3, Py_WRAP, NULL);
+	return Vector_CreatePyObject_wrap(self->v->no, 3, NULL);
 }
 
 static int bpy_bmvert_normal_set(BPy_BMVert *self, PyObject *value)
@@ -468,7 +468,7 @@ PyDoc_STRVAR(bpy_bmface_normal_doc,
 static PyObject *bpy_bmface_normal_get(BPy_BMFace *self)
 {
 	BPY_BM_CHECK_OBJ(self);
-	return Vector_CreatePyObject(self->f->no, 3, Py_WRAP, NULL);
+	return Vector_CreatePyObject_wrap(self->f->no, 3, NULL);
 }
 
 static int bpy_bmface_normal_set(BPy_BMFace *self, PyObject *value)
@@ -1530,7 +1530,7 @@ static PyObject *bpy_bmedge_calc_tangent(BPy_BMEdge *self, PyObject *args)
 		BPY_BM_CHECK_OBJ(py_loop);
 		/* no need to check if they are from the same mesh or even connected */
 		BM_edge_calc_face_tangent(self->e, py_loop->l, vec);
-		return Vector_CreatePyObject(vec, 3, Py_NEW, NULL);
+		return Vector_CreatePyObject(vec, 3, NULL);
 	}
 }
 
@@ -1711,7 +1711,7 @@ static PyObject *bpy_bmface_calc_center_mean(BPy_BMFace *self)
 
 	BPY_BM_CHECK_OBJ(self);
 	BM_face_calc_center_mean(self->f, cent);
-	return Vector_CreatePyObject(cent, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(cent, 3, NULL);
 }
 
 PyDoc_STRVAR(bpy_bmface_calc_center_mean_weighted_doc,
@@ -1728,7 +1728,7 @@ static PyObject *bpy_bmface_calc_center_mean_weighted(BPy_BMFace *self)
 
 	BPY_BM_CHECK_OBJ(self);
 	BM_face_calc_center_mean_weighted(self->f, cent);
-	return Vector_CreatePyObject(cent, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(cent, 3, NULL);
 }
 
 PyDoc_STRVAR(bpy_bmface_calc_center_bounds_doc,
@@ -1745,7 +1745,7 @@ static PyObject *bpy_bmface_calc_center_bounds(BPy_BMFace *self)
 
 	BPY_BM_CHECK_OBJ(self);
 	BM_face_calc_center_bounds(self->f, cent);
-	return Vector_CreatePyObject(cent, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(cent, 3, NULL);
 }
 
 
@@ -1849,7 +1849,7 @@ static PyObject *bpy_bmloop_calc_normal(BPy_BMLoop *self)
 	float vec[3];
 	BPY_BM_CHECK_OBJ(self);
 	BM_loop_calc_face_normal(self->l, vec);
-	return Vector_CreatePyObject(vec, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(vec, 3, NULL);
 }
 
 PyDoc_STRVAR(bpy_bmloop_calc_tangent_doc,
@@ -1866,7 +1866,7 @@ static PyObject *bpy_bmloop_calc_tangent(BPy_BMLoop *self)
 	float vec[3];
 	BPY_BM_CHECK_OBJ(self);
 	BM_loop_calc_face_tangent(self->l, vec);
-	return Vector_CreatePyObject(vec, 3, Py_NEW, NULL);
+	return Vector_CreatePyObject(vec, 3, NULL);
 }
 
 /* Vert Seq
diff --git a/source/blender/python/bmesh/bmesh_py_types_customdata.c b/source/blender/python/bmesh/bmesh_py_types_customdata.c
index 6ecb01a..3c1502d 100644
--- a/source/blender/python/bmesh/bmesh_py_types_customdata.c
+++ b/source/blender/python/bmesh/bmesh_py_types_customdata.c
@@ -1014,7 +1014,7 @@ PyObject *BPy_BMLayerItem_GetItem(BPy_BMElem *py_ele, BPy_BMLayerItem *py_layer)
 		}
 		case CD_SHAPEKEY:
 		{
-			ret = Vector_CreatePyObject((float *)value, 3, Py_WRAP, NULL);
+			ret = Vector_CreatePyObject_wrap((float *)value, 3, NULL);
 			break;
 		}
 		case CD_BWEIGHT:
diff --git a/source/blender/python/bmesh/bmesh_py_types_meshdata.c b/source/blender/python/bmesh/bmesh_py_types_meshdata.c
index 4fa5d0f..df0c39f 100644
--- a/source/blender/python/bmesh/bmesh_py_types_meshdata.c
+++ b/source/blender/python/bmesh/bmesh_py_types_meshdata.c
@@ -150,7 +150,7 @@ PyDoc_STRVAR(bpy_bmloopuv_uv_doc,
 );
 static PyObject *bpy_bmloopuv_uv_get(BPy_BMLoopUV *self, void *UNUSED(closure))
 {
-	return Vector_CreatePyObject(self->data->uv, 2, Py_WRAP, NULL);
+	return Vector_CreatePyObject_wrap(self->data->uv, 2, NULL);
 }
 
 static int bpy_bmloopuv_uv_set(BPy_BMLoopUV *self, PyObject *value, void *UNUSED(closure))
@@ -263,7 +263,7 @@ PyDoc_STRVAR(bpy_bmvertskin_radius_doc,
 );
 static PyObject *bpy_bmvertskin_radius_get(BPy_BMVertSkin *self, void *UNUSED(closure))
 {
-	return Vector_CreatePyObject(self->data->radius, 2, Py_WRAP, NULL);
+	return Vector_CreatePyObject_wrap(self->data->radius, 2, NULL);
 }
 
 static int bpy_bmvertskin_radius_set(BPy_BMVertSkin *self, PyObject *value, void *UNUSED(closure))
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index b06907b..be316a8 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -637,7 +637,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 			case PROP_ALL_VECTOR_SUBTYPES:
 				if (len >= 2 && len <= 4) {
 					if (is_thick) {
-						ret = Vector_CreatePyObject(NULL, len, Py_NEW, NULL);
+						ret = Vector_CreatePyObject(NULL, len, NULL);
 						RNA_property_float_get_array(ptr, prop, ((VectorObject *)ret)->vec);
 					}
 					else {
@@ -650,7 +650,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 			case PROP_MATRIX:
 				if (len == 16) {
 					if (is_thick) {
-						ret = Matrix_CreatePyObject(NULL, 4, 4, Py_NEW, NULL);
+						ret = Matrix_CreatePyObject(NULL, 4, 4, NULL);
 						RNA_property_float_get_array(ptr, prop, ((MatrixObject *)ret)->matrix);
 					}
 					else {
@@ -661,7 +661,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 				}
 				else if (len == 9) {
 					if (is_thick) {
-						ret = Matrix_CreatePyObject(NULL, 3, 3, Py_NEW, NULL);
+						ret = Matrix_CreatePyObject(NULL, 3, 3, NULL);
 						RNA_property_float_get_array(ptr, prop, ((MatrixObject *)ret)->matrix);
 					}
 					else {
@@ -679,7 +679,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 						PropertyRNA *prop_eul_order = NULL;
 						short order = pyrna_rotation_euler_order_get(ptr, &prop_eul_order, EULER_ORDER_XYZ);
 
-						ret = Euler_CreatePyObject(NULL, order, Py_NEW, NULL);  /* TODO, get order from RNA */
+						ret = Euler_CreatePyObject(NULL, order, NULL);  /* TODO, get order from RNA */
 						RNA_property_float_get_array(ptr, prop, ((EulerObject *)ret)->eul);
 					}
 					else {
@@ -691,7 +691,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 				}
 				else if (len == 4) {
 					if (is_thick) {
-						ret = Quaternion_CreatePyObject(NULL, Py_NEW, NULL);
+						ret = Quaternion_CreatePyObject(NULL, NULL);
 						RNA_property_float_get_array(ptr, prop, ((QuaternionObject *)ret)->quat);
 					}
 					else {
@@ -705,7 +705,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
 			case PROP_COLOR_GAMMA:
 				if (len == 3) { /* color */
 					if (is_thick) {
-						ret = Color_CreatePyObject(NULL, Py_NEW, NULL);
+						ret = Color_CreatePyObject(NULL, NULL);
 						

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list