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>2015-12-24 18:08:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-12-24 18:10:00 +0300
commit5cd1b530c8331f7e9cfc967285daa21c7d401957 (patch)
treee99023f0b4ae767cc6a10af50ff425d122e1c272
parent9a1ea681e6fb840b31e43096fb0178e972eea1fc (diff)
Cleanup: use enum for bmesh_elem_check
-rw-r--r--source/blender/bmesh/intern/bmesh_core.c132
1 files changed, 90 insertions, 42 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index f459cc7db7f..29178c29162 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -525,41 +525,75 @@ BMFace *BM_face_create_verts(
int bmesh_elem_check(void *element, const char htype)
{
BMHeader *head = element;
- int err = 0;
+ enum {
+ IS_NULL = (1 << 0),
+ IS_WRONG_TYPE = (1 << 1),
+
+ IS_VERT_WRONG_EDGE_TYPE = (1 << 2),
+
+ IS_EDGE_NULL_DISK_LINK = (1 << 3),
+ IS_EDGE_WRONG_LOOP_TYPE = (1 << 4),
+ IS_EDGE_WRONG_FACE_TYPE = (1 << 5),
+ IS_EDGE_NULL_RADIAL_LINK = (1 << 6),
+ IS_EDGE_ZERO_FACE_LENGTH = (1 << 7),
+
+ IS_LOOP_WRONG_FACE_TYPE = (1 << 8),
+ IS_LOOP_WRONG_EDGE_TYPE = (1 << 9),
+ IS_LOOP_WRONG_VERT_TYPE = (1 << 10),
+ IS_LOOP_VERT_NOT_IN_EDGE = (1 << 11),
+ IS_LOOP_NULL_CYCLE_LINK = (1 << 12),
+ IS_LOOP_ZERO_FACE_LENGTH = (1 << 13),
+ IS_LOOP_WRONG_FACE_LENGTH = (1 << 14),
+ IS_LOOP_WRONG_RADIAL_LENGTH = (1 << 15),
+
+ IS_FACE_NULL_LOOP = (1 << 16),
+ IS_FACE_WRONG_LOOP_FACE = (1 << 17),
+ IS_FACE_NULL_EDGE = (1 << 18),
+ IS_FACE_NULL_VERT = (1 << 19),
+ IS_FACE_LOOP_VERT_NOT_IN_EDGE = (1 << 20),
+ IS_FACE_LOOP_WRONG_RADIAL_LENGTH = (1 << 21),
+ IS_FACE_LOOP_WRONG_DISK_LENGTH = (1 << 22),
+ IS_FACE_WRONG_LENGTH = (1 << 23),
+ } err = 0;
if (!element)
- return (1 << 0);
+ return IS_NULL;
if (head->htype != htype)
- return (1 << 1);
+ return IS_WRONG_TYPE;
switch (htype) {
case BM_VERT:
{
BMVert *v = element;
if (v->e && v->e->head.htype != BM_EDGE) {
- err |= (1 << 2);
+ err |= IS_VERT_WRONG_EDGE_TYPE;
}
break;
}
case BM_EDGE:
{
BMEdge *e = element;
- if (e->l && e->l->head.htype != BM_LOOP)
- err |= (1 << 3);
- if (e->l && e->l->f->head.htype != BM_FACE)
- err |= (1 << 4);
if (e->v1_disk_link.prev == NULL ||
e->v2_disk_link.prev == NULL ||
e->v1_disk_link.next == NULL ||
e->v2_disk_link.next == NULL)
{
- err |= (1 << 5);
+ err |= IS_EDGE_NULL_DISK_LINK;
+ }
+
+ if (e->l && e->l->head.htype != BM_LOOP) {
+ err |= IS_EDGE_WRONG_LOOP_TYPE;
+ }
+ if (e->l && e->l->f->head.htype != BM_FACE) {
+ err |= IS_EDGE_WRONG_FACE_TYPE;
+ }
+ if (e->l && (e->l->radial_next == NULL || e->l->radial_prev == NULL)) {
+ err |= IS_EDGE_NULL_RADIAL_LINK;
+ }
+ if (e->l && e->l->f->len <= 0) {
+ err |= IS_EDGE_ZERO_FACE_LENGTH;
}
- if (e->l && (e->l->radial_next == NULL || e->l->radial_prev == NULL))
- err |= (1 << 6);
- if (e->l && e->l->f->len <= 0)
- err |= (1 << 7);
break;
}
case BM_LOOP:
@@ -567,21 +601,26 @@ int bmesh_elem_check(void *element, const char htype)
BMLoop *l = element, *l2;
int i;
- if (l->f->head.htype != BM_FACE)
- err |= (1 << 8);
- if (l->e->head.htype != BM_EDGE)
- err |= (1 << 9);
- if (l->v->head.htype != BM_VERT)
- err |= (1 << 10);
+ if (l->f->head.htype != BM_FACE) {
+ err |= IS_LOOP_WRONG_FACE_TYPE;
+ }
+ if (l->e->head.htype != BM_EDGE) {
+ err |= IS_LOOP_WRONG_EDGE_TYPE;
+ }
+ if (l->v->head.htype != BM_VERT) {
+ err |= IS_LOOP_WRONG_VERT_TYPE;
+ }
if (!BM_vert_in_edge(l->e, l->v)) {
fprintf(stderr, "%s: fatal bmesh error (vert not in edge)! (bmesh internal error)\n", __func__);
- err |= (1 << 11);
+ err |= IS_LOOP_VERT_NOT_IN_EDGE;
}
- if (l->radial_next == NULL || l->radial_prev == NULL)
- err |= (1 << 12);
- if (l->f->len <= 0)
- err |= (1 << 13);
+ if (l->radial_next == NULL || l->radial_prev == NULL) {
+ err |= IS_LOOP_NULL_CYCLE_LINK;
+ }
+ if (l->f->len <= 0) {
+ err |= IS_LOOP_ZERO_FACE_LENGTH;
+ }
/* validate boundary loop -- invalid for hole loops, of course,
* but we won't be allowing those for a while yet */
@@ -595,11 +634,13 @@ int bmesh_elem_check(void *element, const char htype)
i++;
} while ((l2 = l2->next) != l);
- if (i != l->f->len || l2 != l)
- err |= (1 << 14);
+ if (i != l->f->len || l2 != l) {
+ err |= IS_LOOP_WRONG_FACE_LENGTH;
+ }
- if (!bmesh_radial_validate(bmesh_radial_length(l), l))
- err |= (1 << 15);
+ if (!bmesh_radial_validate(bmesh_radial_length(l), l)) {
+ err |= IS_LOOP_WRONG_RADIAL_LENGTH;
+ }
break;
}
@@ -616,36 +657,43 @@ int bmesh_elem_check(void *element, const char htype)
if (!f->l_first)
#endif
{
- err |= (1 << 16);
+ err |= IS_FACE_NULL_LOOP;
}
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
do {
if (l_iter->f != f) {
fprintf(stderr, "%s: loop inside one face points to another! (bmesh internal error)\n", __func__);
- err |= (1 << 17);
+ err |= IS_FACE_WRONG_LOOP_FACE;
}
- if (!l_iter->e)
- err |= (1 << 18);
- if (!l_iter->v)
- err |= (1 << 19);
+ if (!l_iter->e) {
+ err |= IS_FACE_NULL_EDGE;
+ }
+ if (!l_iter->v) {
+ err |= IS_FACE_NULL_VERT;
+ }
if (l_iter->e && l_iter->v) {
- if (!BM_vert_in_edge(l_iter->e, l_iter->v) || !BM_vert_in_edge(l_iter->e, l_iter->next->v)) {
- err |= (1 << 20);
+ if (!BM_vert_in_edge(l_iter->e, l_iter->v) ||
+ !BM_vert_in_edge(l_iter->e, l_iter->next->v))
+ {
+ err |= IS_FACE_LOOP_VERT_NOT_IN_EDGE;
}
- if (!bmesh_radial_validate(bmesh_radial_length(l_iter), l_iter))
- err |= (1 << 21);
+ if (!bmesh_radial_validate(bmesh_radial_length(l_iter), l_iter)) {
+ err |= IS_FACE_LOOP_WRONG_RADIAL_LENGTH;
+ }
- if (!bmesh_disk_count(l_iter->v) || !bmesh_disk_count(l_iter->next->v))
- err |= (1 << 22);
+ if (!bmesh_disk_count(l_iter->v) || !bmesh_disk_count(l_iter->next->v)) {
+ err |= IS_FACE_LOOP_WRONG_DISK_LENGTH;
+ }
}
len++;
} while ((l_iter = l_iter->next) != l_first);
- if (len != f->len)
- err |= (1 << 23);
+ if (len != f->len) {
+ err |= IS_FACE_WRONG_LENGTH;
+ }
break;
}
default: