[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58579] trunk/blender/source/blender: code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh .

Campbell Barton ideasman42 at gmail.com
Wed Jul 24 20:38:56 CEST 2013


Revision: 58579
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58579
Author:   campbellbarton
Date:     2013-07-24 18:38:55 +0000 (Wed, 24 Jul 2013)
Log Message:
-----------
code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/editors/mesh/editmesh_select.c
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c	2013-07-24 18:38:55 UTC (rev 58579)
@@ -583,9 +583,8 @@
 	MEdge *med, *medge;
 	BMVert *v, *eve;
 	BMEdge *e;
-	BMLoop *l;
 	BMFace *f;
-	BMIter iter, liter;
+	BMIter iter;
 	int i, j, ototvert;
 
 	const int cd_vert_bweight_offset = CustomData_get_offset(&bm->vdata, CD_BWEIGHT);
@@ -699,23 +698,27 @@
 	i = 0;
 	j = 0;
 	BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+		BMLoop *l_iter, *l_first;
 		mpoly->loopstart = j;
 		mpoly->totloop = f->len;
 		mpoly->mat_nr = f->mat_nr;
 		mpoly->flag = BM_face_flag_to_mflag(f);
 
-		l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f);
-		for ( ; l; l = BM_iter_step(&liter), j++, mloop++) {
-			mloop->e = BM_elem_index_get(l->e);
-			mloop->v = BM_elem_index_get(l->v);
+		l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+		do {
+			mloop->e = BM_elem_index_get(l_iter->e);
+			mloop->v = BM_elem_index_get(l_iter->v);
 
-			/* copy over customdat */
-			CustomData_from_bmesh_block(&bm->ldata, &me->ldata, l->head.data, j);
-			BM_CHECK_ELEMENT(l);
-			BM_CHECK_ELEMENT(l->e);
-			BM_CHECK_ELEMENT(l->v);
-		}
+			/* copy over customdata */
+			CustomData_from_bmesh_block(&bm->ldata, &me->ldata, l_iter->head.data, j);
 
+			j++;
+			mloop++;
+			BM_CHECK_ELEMENT(l_iter);
+			BM_CHECK_ELEMENT(l_iter->e);
+			BM_CHECK_ELEMENT(l_iter->v);
+		} while ((l_iter = l_iter->next) != l_first);
+
 		if (f == bm->act_face) me->act_face = i;
 
 		/* copy over customdata */

Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2013-07-24 18:38:55 UTC (rev 58579)
@@ -150,10 +150,7 @@
 #endif
 
 	/* lookup edge */
-	for (i = 0, source_loop = BM_iter_new(&iter, source_mesh, BM_LOOPS_OF_FACE, source_face);
-	     source_loop;
-	     source_loop = BM_iter_step(&iter), i++)
-	{
+	BM_ITER_ELEM_INDEX (source_loop, &iter, source_face, BM_LOOPS_OF_FACE, i) {
 		vtar[i] = BLI_ghash_lookup(vhash, source_loop->v);
 		edar[i] = BLI_ghash_lookup(ehash, source_loop->e);
 	}

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-07-24 18:38:55 UTC (rev 58579)
@@ -1590,8 +1590,7 @@
 		}
 
 		if (em->bm->totfacesel) {
-			efa = BM_iter_new(&iter, em->bm, BM_FACES_OF_MESH, NULL);
-			for (; efa; efa = BM_iter_step(&iter)) {
+			BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
 				if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
 					BM_face_select_set(em->bm, efa, true);
 				}

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-07-24 18:06:41 UTC (rev 58578)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-07-24 18:38:55 UTC (rev 58579)
@@ -2277,7 +2277,7 @@
 
 	/* store percentage of edge cut for KNIFE_EXACT here.*/
 	slot_edge_percents = BMO_slot_get(bmop.slots_in, "edge_percents");
-	for (be = BM_iter_new(&iter, bm, BM_EDGES_OF_MESH, NULL); be; be = BM_iter_step(&iter)) {
+	BM_ITER_MESH (be, &iter, bm, BM_EDGES_OF_MESH) {
 		bool is_cut = false;
 		if (BM_elem_flag_test(be, BM_ELEM_SELECT)) {
 			const float *sco_a = screen_vert_coords[BM_elem_index_get(be->v1)];




More information about the Bf-blender-cvs mailing list