From c65b3b73fd2c0c0011ef36d8fc36301de4a42fe0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 25 Feb 2012 22:23:40 +0000 Subject: bmesh api cleanup * better type safety for BM_elem_flag_* and BM_elem_index_* functions. * add BMElem type to be used where BMFace/Edge/Vert/Loop can be interchanged. * fix bug in select manifold, found when making functions more strict. --- source/blender/bmesh/bmesh.h | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'source/blender/bmesh/bmesh.h') diff --git a/source/blender/bmesh/bmesh.h b/source/blender/bmesh/bmesh.h index a3f7c07e69d..c04bc919e5a 100644 --- a/source/blender/bmesh/bmesh.h +++ b/source/blender/bmesh/bmesh.h @@ -144,17 +144,19 @@ BMFace *BM_face_create_quad_tri(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v3, B BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, int len, int nodouble); /* stuff for dealing with header flags */ -BM_INLINE char BM_elem_flag_test(const void *element, const char hflag); - -/* stuff for dealing with header flags */ -BM_INLINE void BM_elem_flag_enable(void *element, const char hflag); - -/* stuff for dealing with header flags */ -BM_INLINE void BM_elem_flag_disable(void *element, const char hflag); - -/* stuff for dealing BM_elem_flag_toggle header flags */ -BM_INLINE void BM_elem_flag_toggle(void *element, const char hflag); -BM_INLINE void BM_elem_flag_merge(void *element_a, void *element_b); +#define BM_elem_flag_test(ele, hflag) _bm_elem_flag_test (&(ele)->head, hflag) +#define BM_elem_flag_enable(ele, hflag) _bm_elem_flag_enable (&(ele)->head, hflag) +#define BM_elem_flag_disable(ele, hflag) _bm_elem_flag_disable (&(ele)->head, hflag) +#define BM_elem_flag_set(ele, hflag, val) _bm_elem_flag_set (&(ele)->head, hflag, val) +#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); /* notes on BM_elem_index_set(...) usage, * Set index is sometimes abused as temp storage, other times we cant be @@ -185,8 +187,10 @@ BM_INLINE void BM_elem_flag_merge(void *element_a, void *element_b); * assume each case they are dirty. * - campbell */ -BM_INLINE void BM_elem_index_set(void *element, const int index); -BM_INLINE int BM_elem_index_get(const void *element); +#define BM_elem_index_get(ele) _bm_elem_index_get(&(ele)->head) +#define BM_elem_index_set(ele, index) _bm_elem_index_set(&(ele)->head, index) +BM_INLINE int _bm_elem_index_get(const BMHeader *ele); +BM_INLINE void _bm_elem_index_set(BMHeader *ele, const int index); /* todo */ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short copyedges); -- cgit v1.2.3