[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44486] trunk/blender/source/blender: bmesh minor api edits to be a little more typesafe.

Campbell Barton ideasman42 at gmail.com
Mon Feb 27 15:57:10 CET 2012


Revision: 44486
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44486
Author:   campbellbarton
Date:     2012-02-27 14:57:09 +0000 (Mon, 27 Feb 2012)
Log Message:
-----------
bmesh minor api edits to be a little more typesafe.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/bmesh.h
    trunk/blender/source/blender/bmesh/bmesh_marking.h
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
    trunk/blender/source/blender/bmesh/intern/bmesh_inline.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_private.h
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/bmesh.h	2012-02-27 14:57:09 UTC (rev 44486)
@@ -144,12 +144,12 @@
 #define BM_elem_flag_toggle( ele, hflag)      _bm_elem_flag_toggle  (&(ele)->head, hflag)
 #define BM_elem_flag_merge(  ele_a, ele_b)    _bm_elem_flag_merge   (&(ele_a)->head, &(ele_b)->head)
 
-BM_INLINE char _bm_elem_flag_test(const BMHeader *element, const char hflag);
-BM_INLINE void _bm_elem_flag_enable(BMHeader *element, const char hflag);
-BM_INLINE void _bm_elem_flag_disable(BMHeader *element, const char hflag);
-BM_INLINE void _bm_elem_flag_set(BMHeader *ele, const char hflag, const int val);
-BM_INLINE void _bm_elem_flag_toggle(BMHeader *ele, const char hflag);
-BM_INLINE void _bm_elem_flag_merge(BMHeader *ele_a, BMHeader *ele_b);
+BM_INLINE char _bm_elem_flag_test(const BMHeader *head, const char hflag);
+BM_INLINE void _bm_elem_flag_enable(BMHeader *head, const char hflag);
+BM_INLINE void _bm_elem_flag_disable(BMHeader *head, const char hflag);
+BM_INLINE void _bm_elem_flag_set(BMHeader *head, const char hflag, const int val);
+BM_INLINE void _bm_elem_flag_toggle(BMHeader *head, const char hflag);
+BM_INLINE void _bm_elem_flag_merge(BMHeader *head_a, BMHeader *head_b);
 
 /* notes on BM_elem_index_set(...) usage,
  * Set index is sometimes abused as temp storage, other times we cant be

Modified: trunk/blender/source/blender/bmesh/bmesh_marking.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_marking.h	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/bmesh_marking.h	2012-02-27 14:57:09 UTC (rev 44486)
@@ -35,13 +35,15 @@
 } BMEditSelection;
 
 /* geometry hiding code */
-void BM_elem_hide_set(BMesh *bm, void *element, int hide);
+#define BM_elem_hide_set(bm, ele, hide) _bm_elem_hide_set(bm, &(ele)->head, hide)
+void _bm_elem_hide_set(BMesh *bm, BMHeader *ele, int hide);
 void BM_vert_hide_set(BMesh *bm, BMVert *v, int hide);
 void BM_edge_hide_set(BMesh *bm, BMEdge *e, int hide);
 void BM_face_hide_set(BMesh *bm, BMFace *f, int hide);
 
 /* Selection code */
-void BM_elem_select_set(BMesh *bm, void *element, int select);
+#define BM_elem_select_set(bm, ele, hide) _bm_elem_select_set(bm, &(ele)->head, hide)
+void _bm_elem_select_set(BMesh *bm, BMHeader *ele, int select);
 
 /* use BM_elem_flag_test(ele, BM_ELEM_SELECT) to test selection */
 

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -567,7 +567,7 @@
 
 	/* First we copy select */
 	if (BM_elem_flag_test((BMElem *)sheader, BM_ELEM_SELECT)) {
-		BM_elem_select_set(target_mesh, target, TRUE);
+		BM_elem_select_set(target_mesh, (BMElem *)target, TRUE);
 	}
 	
 	/* Now we copy flags */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_inline.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_inline.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_inline.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -31,46 +31,46 @@
 
 #include "bmesh.h"
 
-BM_INLINE char _bm_elem_flag_test(const BMHeader *ele, const char hflag)
+BM_INLINE char _bm_elem_flag_test(const BMHeader *head, const char hflag)
 {
-	return ele->hflag & hflag;
+	return head->hflag & hflag;
 }
 
-BM_INLINE void _bm_elem_flag_enable(BMHeader *ele, const char hflag)
+BM_INLINE void _bm_elem_flag_enable(BMHeader *head, const char hflag)
 {
-	ele->hflag |= hflag;
+	head->hflag |= hflag;
 }
 
-BM_INLINE void _bm_elem_flag_disable(BMHeader *ele, const char hflag)
+BM_INLINE void _bm_elem_flag_disable(BMHeader *head, const char hflag)
 {
-	ele->hflag &= ~hflag;
+	head->hflag &= ~hflag;
 }
 
-BM_INLINE void _bm_elem_flag_set(BMHeader *ele, const char hflag, const int val)
+BM_INLINE void _bm_elem_flag_set(BMHeader *head, const char hflag, const int val)
 {
-	if (val)  _bm_elem_flag_enable(ele,  hflag);
-	else      _bm_elem_flag_disable(ele, hflag);
+	if (val)  _bm_elem_flag_enable(head,  hflag);
+	else      _bm_elem_flag_disable(head, hflag);
 }
 
-BM_INLINE void _bm_elem_flag_toggle(BMHeader *ele, const char hflag)
+BM_INLINE void _bm_elem_flag_toggle(BMHeader *head, const char hflag)
 {
-	ele->hflag ^= hflag;
+	head->hflag ^= hflag;
 }
 
-BM_INLINE void _bm_elem_flag_merge(BMHeader *ele_a, BMHeader *ele_b)
+BM_INLINE void _bm_elem_flag_merge(BMHeader *head_a, BMHeader *head_b)
 {
-	ele_a->hflag = ele_b->hflag = ele_a->hflag | ele_b->hflag;
+	head_a->hflag = head_b->hflag = head_a->hflag | head_b->hflag;
 }
 
 
-BM_INLINE void _bm_elem_index_set(BMHeader *ele, const int index)
+BM_INLINE void _bm_elem_index_set(BMHeader *head, const int index)
 {
-	ele->index = index;
+	head->index = index;
 }
 
-BM_INLINE int _bm_elem_index_get(const BMHeader *ele)
+BM_INLINE int _bm_elem_index_get(const BMHeader *head)
 {
-	return ele->index;
+	return head->index;
 }
 
 #endif /* __BMESH_INLINE_C__ */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -475,19 +475,17 @@
 }
 
 /* note: by design, this will not touch the editselection history stuff */
-void BM_elem_select_set(struct BMesh *bm, void *element, int select)
+void _bm_elem_select_set(struct BMesh *bm, BMHeader *head, int select)
 {
-	BMHeader *head = element;
-
 	switch (head->htype) {
 		case BM_VERT:
-			BM_vert_select_set(bm, (BMVert *)element, select);
+			BM_vert_select_set(bm, (BMVert *)head, select);
 			break;
 		case BM_EDGE:
-			BM_edge_select_set(bm, (BMEdge *)element, select);
+			BM_edge_select_set(bm, (BMEdge *)head, select);
 			break;
 		case BM_FACE:
-			BM_face_select_set(bm, (BMFace *)element, select);
+			BM_face_select_set(bm, (BMFace *)head, select);
 			break;
 		default:
 			BLI_assert(0);
@@ -881,25 +879,25 @@
 	}
 }
 
-void BM_elem_hide_set(BMesh *bm, void *element, int hide)
+void _bm_elem_hide_set(BMesh *bm, BMHeader *head, int hide)
 {
-	BMHeader *h = element;
-
 	/* Follow convention of always deselecting before
 	 * hiding an element */
-	if (hide) {
-		BM_elem_select_set(bm, element, FALSE);
-	}
-
-	switch (h->htype) {
+	switch (head->htype) {
 		case BM_VERT:
-			BM_vert_hide_set(bm, element, hide);
+			if (hide) BM_vert_select_set(bm, (BMVert *)head, FALSE);
+			BM_vert_hide_set(bm, (BMVert *)head, hide);
 			break;
 		case BM_EDGE:
-			BM_edge_hide_set(bm, element, hide);
+			if (hide) BM_edge_select_set(bm, (BMEdge *)head, FALSE);
+			BM_edge_hide_set(bm, (BMEdge *)head, hide);
 			break;
 		case BM_FACE:
-			BM_face_hide_set(bm, element, hide);
+			if (hide) BM_face_select_set(bm, (BMFace *)head, FALSE);
+			BM_face_hide_set(bm, (BMFace *)head, hide);
 			break;
+		default:
+			BMESH_ASSERT(0);
+			break;
 	}
 }

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_newcore.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -330,7 +330,7 @@
 	return f;
 }
 
-int bmesh_element_check(BMesh *UNUSED(bm), void *element, const char htype)
+int bmesh_elem_check(BMesh *UNUSED(bm), void *element, const char htype)
 {
 	BMHeader *head = element;
 	int err = 0;

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_private.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_private.h	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_private.h	2012-02-27 14:57:09 UTC (rev 44486)
@@ -40,13 +40,13 @@
 struct BMLoop;
 
 /* returns positive nonzero on error */
-int bmesh_element_check(BMesh *bm, void *element, const char htype);
+int bmesh_elem_check(BMesh *bm, void *element, const char htype);
 
 #define BM_CHECK_ELEMENT(bm, el)                                              \
-    if (bmesh_element_check(bm, el, ((BMHeader *)el)->htype)) {               \
+    if (bmesh_elem_check(bm, el, ((BMHeader *)el)->htype)) {               \
         printf("check_element failure, with code %i on line %i in file\n"     \
         "    \"%s\"\n\n",                                                     \
-        bmesh_element_check(bm, el, ((BMHeader *)el)->htype),                 \
+        bmesh_elem_check(bm, el, ((BMHeader *)el)->htype),                 \
         __LINE__, __FILE__);                                                  \
     }
 

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -1031,7 +1031,7 @@
 	
 	if (seltype == SUBDIV_SELECT_INNER) {
 		BMOIter iter;
-		BMHeader *ele;
+		BMElem *ele;
 		// int i;
 		
 		ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
@@ -1041,7 +1041,7 @@
 	}
 	else if (seltype == SUBDIV_SELECT_LOOPCUT) {
 		BMOIter iter;
-		BMHeader *ele;
+		BMElem *ele;
 		// int i;
 		
 		/* deselect input */
@@ -1051,7 +1051,7 @@
 		for ( ; ele; ele = BMO_iter_step(&iter)) {
 			BM_elem_select_set(bm, ele, TRUE);
 
-			if (ele->htype == BM_VERT) {
+			if (ele->head.htype == BM_VERT) {
 				BMEdge *e;
 				BMIter eiter;
 

Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-02-27 14:56:21 UTC (rev 44485)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-02-27 14:57:09 UTC (rev 44486)
@@ -245,7 +245,7 @@
 	BMEdge *edge;
 	BMFace *f;
 	ModifierData *md;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list