Revision: 44437
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44437
Author:   campbellbarton
Date:     2012-02-25 20:58:03 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
bmesh code cleanup
* change BMO_elem_flag_* defines to inline functions.
* BMO_slot_map_insert() is too big for an inline function - un-inline it.
* remove redundant casts.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/bmesh_operator_api.h
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
    trunk/blender/source/blender/bmesh/intern/bmesh_interp.c
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
    trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
    trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
    trunk/blender/source/blender/bmesh/intern/bmesh_private.h
    trunk/blender/source/blender/bmesh/intern/bmesh_structure.c
    trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
    trunk/blender/source/blender/bmesh/operators/bmo_create.c
    trunk/blender/source/blender/bmesh/operators/bmo_removedoubles.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/bmesh/operators/bmo_utils.c
    trunk/blender/source/blender/editors/mesh/knifetool.c
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
    trunk/blender/source/blender/modifiers/intern/MOD_array.c

Modified: trunk/blender/source/blender/bmesh/bmesh_operator_api.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_operator_api.h     2012-02-25 
19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/bmesh_operator_api.h     2012-02-25 
20:58:03 UTC (rev 44437)
@@ -170,23 +170,6 @@
  * after it finishes executing in BMO_op_exec).*/
 void BMO_op_finish(struct BMesh *bm, struct BMOperator *op);
 
-
-/* tool flag API. never, ever ever should tool code put junk in
- * header flags (element->head.flag), nor should they use
- * element->head.eflag1/eflag2.  instead, use this api to set
- * flags.
- *
- * if you need to store a value per element, use a
- * ghash or a mapping slot to do it. */
-
-/* flags 15 and 16 (1<<14 and 1<<15) are reserved for bmesh api use */
-#define BMO_elem_flag_test(bm, element, oflag)    
((element)->oflags[bm->stackdepth-1].f &   (oflag))
-#define BMO_elem_flag_enable(bm, element, oflag)  
((element)->oflags[bm->stackdepth-1].f |=  (oflag))
-#define BMO_elem_flag_disable(bm, element, oflag) 
((element)->oflags[bm->stackdepth-1].f &= ~(oflag))
-#define BMO_elem_flag_set(bm, element, oflag, val)((val) ? 
BMO_elem_flag_enable(bm, element, oflag) : \
-                                                           
BMO_elem_flag_disable(bm, element, oflag))
-#define BMO_elem_flag_toggle(bm, element, oflag)  
((element)->oflags[bm->stackdepth-1].f ^=  (oflag))
-
 /* count the number of elements with a specific flag.
  * type can be a bitmask of BM_FACE, BM_EDGE, or BM_FACE. */
 int BMO_mesh_flag_count(struct BMesh *bm, const short oflag, const char htype);
@@ -331,6 +314,9 @@
 int BMO_slot_buf_count(struct BMesh *bm, struct BMOperator *op, const char 
*slotname);
 int BMO_slot_map_count(struct BMesh *bm, struct BMOperator *op, const char 
*slotname);
 
+void BMO_slot_map_insert(BMesh *UNUSED(bm), BMOperator *op, const char 
*slotname,
+                         void *element, void *data, int len);
+
 /* Counts the number of edges with tool flag toolflag around
  */
 int BMO_vert_edge_flags_count(BMesh *bm, BMVert *v, const short oflag);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-02-25 
19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-02-25 
20:58:03 UTC (rev 44437)
@@ -559,25 +559,37 @@
 {
        const BMHeader *sheader = source;
        BMHeader *theader = target;
-       
+
+       BLI_assert(sheader->htype == theader->htype);
+
        if (sheader->htype != theader->htype)
                return;
 
        /* First we copy select */
-       if (BM_elem_flag_test(source, BM_ELEM_SELECT)) 
BM_elem_select_set(target_mesh, target, TRUE);
+       if (BM_elem_flag_test(source, BM_ELEM_SELECT)) {
+               BM_elem_select_set(target_mesh, target, TRUE);
+       }
        
        /* Now we copy flags */
        theader->hflag = sheader->hflag;
        
        /* Copy specific attributes */
-       if (theader->htype == BM_VERT)
-               bm_vert_attrs_copy(source_mesh, target_mesh, (const BMVert 
*)source, (BMVert *)target);
-       else if (theader->htype == BM_EDGE)
-               bm_edge_attrs_copy(source_mesh, target_mesh, (const BMEdge 
*)source, (BMEdge *)target);
-       else if (theader->htype == BM_LOOP)
-               bm_loop_attrs_copy(source_mesh, target_mesh, (const BMLoop 
*)source, (BMLoop *)target);
-       else if (theader->htype == BM_FACE)
-               bm_face_attrs_copy(source_mesh, target_mesh, (const BMFace 
*)source, (BMFace *)target);
+       switch (theader->htype) {
+               case BM_VERT:
+                       bm_vert_attrs_copy(source_mesh, target_mesh, (const 
BMVert *)source, (BMVert *)target);
+                       break;
+               case BM_EDGE:
+                       bm_edge_attrs_copy(source_mesh, target_mesh, (const 
BMEdge *)source, (BMEdge *)target);
+                       break;
+               case BM_LOOP:
+                       bm_loop_attrs_copy(source_mesh, target_mesh, (const 
BMLoop *)source, (BMLoop *)target);
+                       break;
+               case BM_FACE:
+                       bm_face_attrs_copy(source_mesh, target_mesh, (const 
BMFace *)source, (BMFace *)target);
+                       break;
+               default:
+                       BLI_assert(0);
+       }
 }
 
 BMesh *BM_mesh_copy(BMesh *bmold)

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_interp.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_interp.c    2012-02-25 
19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_interp.c    2012-02-25 
20:58:03 UTC (rev 44437)
@@ -422,7 +422,7 @@
        b[0] = coord[i];
        b[1] = coord[j];
 
-       return mat[0][0]*mat[1][1] - mat[0][1]*mat[1][0];
+       return mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
 }
 
 static void bmesh_loop_flip_disp(float source_axis_x[3], float 
source_axis_y[3],
@@ -449,8 +449,8 @@
                        d = bmesh_loop_flip_equotion(mat, b, target_axis_x, 
target_axis_y, coord, 1, 2);
        }
 
-       disp[0] = (b[0]*mat[1][1] - mat[0][1]*b[1]) / d;
-       disp[1] = (mat[0][0]*b[1] - b[0]*mat[1][0]) / d;
+       disp[0] = (b[0] * mat[1][1] - mat[0][1] * b[1]) / d;
+       disp[1] = (mat[0][0] * b[1] - b[0] * mat[1][0]) / d;
 }
 
 static void bmesh_loop_interp_mdisps(BMesh *bm, BMLoop *target, BMFace *source)

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-02-25 
19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-02-25 
20:58:03 UTC (rev 44437)
@@ -479,9 +479,20 @@
 {
        BMHeader *head = element;
 
-       if      (head->htype == BM_VERT) BM_vert_select_set(bm, (BMVert 
*)element, select);
-       else if (head->htype == BM_EDGE) BM_edge_select_set(bm, (BMEdge 
*)element, select);
-       else if (head->htype == BM_FACE) BM_face_select_set(bm, (BMFace 
*)element, select);
+       switch (head->htype) {
+               case BM_VERT:
+                       BM_vert_select_set(bm, (BMVert *)element, select);
+                       break;
+               case BM_EDGE:
+                       BM_edge_select_set(bm, (BMEdge *)element, select);
+                       break;
+               case BM_FACE:
+                       BM_face_select_set(bm, (BMFace *)element, select);
+                       break;
+               default:
+                       BLI_assert(0);
+                       break;
+       }
 }
 
 /* this replaces the active flag used in uv/face mode */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c   2012-02-25 
19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c   2012-02-25 
20:58:03 UTC (rev 44437)
@@ -67,20 +67,22 @@
        v->head.htype = BM_VERT;
 
        /* 'v->no' is handled by BM_elem_attrs_copy */
-       if (co) copy_v3_v3(v->co, co);
-       
+       if (co) {
+               copy_v3_v3(v->co, co);
+       }
+
        /* allocate flag */
        v->oflags = BLI_mempool_calloc(bm->toolflagpool);
 
        CustomData_bmesh_set_default(&bm->vdata, &v->head.data);
        
        if (example) {
-               BM_elem_attrs_copy(bm, bm, (BMVert *)example, v);
+               BM_elem_attrs_copy(bm, bm, example, v);
        }
 
        BM_CHECK_ELEMENT(bm, v);
 
-       return (BMVert *) v;
+       return v;
 }
 
 /**
@@ -112,7 +114,7 @@
        BMEdge *e;
        
        if (nodouble && (e = BM_edge_exists(v1, v2)))
-               return (BMEdge *)e;
+               return e;
        
        e = BLI_mempool_calloc(bm->epool);
 
@@ -131,8 +133,8 @@
        /* allocate flag */
        e->oflags = BLI_mempool_calloc(bm->toolflagpool);
 
-       e->v1 = (BMVert *) v1;
-       e->v2 = (BMVert *) v2;
+       e->v1 = v1;
+       e->v2 = v2;
        
        BM_elem_flag_enable(e, BM_ELEM_SMOOTH);
        
@@ -142,11 +144,11 @@
        bmesh_disk_append_edge(e, e->v2);
        
        if (example)
-               BM_elem_attrs_copy(bm, bm, (BMEdge *)example, (BMEdge *)e);
+               BM_elem_attrs_copy(bm, bm, example, e);
        
        BM_CHECK_ELEMENT(bm, e);
 
-       return (BMEdge *) e;
+       return e;
 }
 
 static BMLoop *bmesh_create_loop(BMesh *bm, BMVert *v, BMEdge *e, BMFace *f, 
const BMLoop *example)
@@ -292,14 +294,14 @@
 
        f->head.htype = BM_FACE;
 
-       startl = lastl = bm_face_boundary_add(bm, (BMFace *)f, verts[0], 
edges[0]);
+       startl = lastl = bm_face_boundary_add(bm, f, verts[0], edges[0]);
        
-       startl->v = (BMVert *)verts[0];
-       startl->e = (BMEdge *)edges[0];
+       startl->v = verts[0];
+       startl->e = edges[0];
        for (i = 1; i < len; i++) {
-               l = bmesh_create_loop(bm, verts[i], edges[i], (BMFace *)f, 
edges[i]->l);
+               l = bmesh_create_loop(bm, verts[i], edges[i], f, edges[i]->l);
                
-               l->f = (BMFace *) f;
+               l->f = f;
                bmesh_radial_append(edges[i], l);
 
                l->prev = lastl;
@@ -323,7 +325,7 @@
        
        BM_CHECK_ELEMENT(bm, f);
 
-       return (BMFace *) f;
+       return f;
 }
 
 int bmesh_check_element(BMesh *UNUSED(bm), void *element, const char htype)
@@ -1083,7 +1085,7 @@
        f->totbounds = 1;
 #endif
 
-       return (BMFace *) f;
+       return f;
 }
 
 /**

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c       
2012-02-25 19:49:23 UTC (rev 44436)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operator_api_inline.c       
2012-02-25 20:58:03 UTC (rev 44437)
@@ -31,34 +31,48 @@
 
 #include "bmesh.h"
 
-/* inserts a key/value mapping into a mapping slot.  note that it copies the
- * value, it doesn't store a reference to it. */
 
-BM_INLINE void BMO_slot_map_insert(BMesh *UNUSED(bm), BMOperator *op, const 
char *slotname,
-                                   void *element, void *data, int len)
+/* tool flag API. never, ever ever should tool code put junk in
+ * header flags (element->head.flag), nor should they use
+ * element->head.eflag1/eflag2.  instead, use this api to set
+ * flags.
+ *
+ * if you need to store a value per element, use a
+ * ghash or a mapping slot to do it. */
+
+/* flags 15 and 16 (1<<14 and 1<<15) are reserved for bmesh api use */
+BM_INLINE int _bmo_elem_flag_test(BMesh *bm, BMFlagLayer *oflags, const short 
oflag)
 {
-       BMOElemMapping *mapping;
-       BMOpSlot *slot = BMO_slot_get(op, slotname);
+    return oflags[bm->stackdepth-1].f & oflag;
+}
 
-       /*sanity check*/
-       if (slot->slottype != BMO_OP_SLOT_MAPPING) {
-               return;
-       }
+BM_INLINE void _bmo_elem_flag_enable(BMesh *bm, BMFlagLayer *oflags, const 
short oflag)
+{
+       oflags[bm->stackdepth-1].f |= oflag;
+}
 
-       mapping = (BMOElemMapping *) BLI_memarena_alloc(op->arena, 
sizeof(*mapping) + len);
+BM_INLINE void _bmo_elem_flag_disable(BMesh *bm, BMFlagLayer *oflags, const 
short oflag)
+{
+       oflags[bm->stackdepth-1].f &= ~oflag;
+}
 
-       mapping->element = (BMHeader*) element;
-       mapping->len = len;
-       memcpy(mapping + 1, data, len);
+BM_INLINE void _bmo_elem_flag_set(BMesh *bm, BMFlagLayer *oflags, const short 
oflag, int val)
+{
+       if (val) oflags[bm->stackdepth-1].f |= oflag;

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to