From cdac157f4cc40cf6805038637ee2258f894a4a1a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 24 Jul 2013 18:38:55 +0000 Subject: code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh. --- source/blender/bmesh/intern/bmesh_mesh_conv.c | 27 +++++++++++++++------------ source/blender/bmesh/operators/bmo_dupe.c | 5 +---- 2 files changed, 16 insertions(+), 16 deletions(-) (limited to 'source/blender/bmesh') diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c index 7c4af8eaa3b..184fed59f01 100644 --- a/source/blender/bmesh/intern/bmesh_mesh_conv.c +++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c @@ -583,9 +583,8 @@ void BM_mesh_bm_to_me(BMesh *bm, Mesh *me, bool do_tessface) 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,22 +698,26 @@ void BM_mesh_bm_to_me(BMesh *bm, Mesh *me, bool do_tessface) 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; diff --git a/source/blender/bmesh/operators/bmo_dupe.c b/source/blender/bmesh/operators/bmo_dupe.c index d65e2669a58..48103969474 100644 --- a/source/blender/bmesh/operators/bmo_dupe.c +++ b/source/blender/bmesh/operators/bmo_dupe.c @@ -150,10 +150,7 @@ static BMFace *copy_face(BMOperator *op, #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); } -- cgit v1.2.3