Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-02-26 02:23:40 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-26 02:23:40 +0400
commitc65b3b73fd2c0c0011ef36d8fc36301de4a42fe0 (patch)
tree3a45d161d5814bf403ffa9093a2d417b6f7a960e /source/blender/bmesh/bmesh.h
parent72e1316dc4b607440430779d78a26a76a4527c4b (diff)
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.
Diffstat (limited to 'source/blender/bmesh/bmesh.h')
-rw-r--r--source/blender/bmesh/bmesh.h30
1 files changed, 17 insertions, 13 deletions
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);