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>2013-08-26 00:03:45 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-08-26 00:03:45 +0400
commitbbce51d11691acc561f1684c20e60613941d4e9b (patch)
treeada2418ebb181015b561df9e9c92035ee2a84b43 /source/blender/bmesh/intern
parent1d5eff36f5bd7fc7986e59d4dbe7b885ccb50e61 (diff)
replace hashes with sets where possible.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers.c12
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers.h4
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers_impl.c90
3 files changed, 53 insertions, 53 deletions
diff --git a/source/blender/bmesh/intern/bmesh_walkers.c b/source/blender/bmesh/intern/bmesh_walkers.c
index c9e36541db7..af901b3359c 100644
--- a/source/blender/bmesh/intern/bmesh_walkers.c
+++ b/source/blender/bmesh/intern/bmesh_walkers.c
@@ -87,8 +87,8 @@ void BMW_init(BMWalker *walker, BMesh *bm, int type,
walker->mask_edge = mask_edge;
walker->mask_face = mask_face;
- walker->visithash = BLI_ghash_ptr_new("bmesh walkers");
- walker->secvisithash = BLI_ghash_ptr_new("bmesh walkers sec");
+ walker->visit_set = BLI_gset_ptr_new("bmesh walkers");
+ walker->visit_set_alt = BLI_gset_ptr_new("bmesh walkers sec");
if (UNLIKELY(type >= BMW_MAXWALKERS || type < 0)) {
fprintf(stderr,
@@ -127,8 +127,8 @@ void BMW_init(BMWalker *walker, BMesh *bm, int type,
void BMW_end(BMWalker *walker)
{
BLI_mempool_destroy(walker->worklist);
- BLI_ghash_free(walker->visithash, NULL, NULL);
- BLI_ghash_free(walker->secvisithash, NULL, NULL);
+ BLI_gset_free(walker->visit_set, NULL);
+ BLI_gset_free(walker->visit_set_alt, NULL);
}
@@ -253,6 +253,6 @@ void BMW_reset(BMWalker *walker)
BMW_state_remove(walker);
}
walker->depth = 0;
- BLI_ghash_clear(walker->visithash, NULL, NULL);
- BLI_ghash_clear(walker->secvisithash, NULL, NULL);
+ BLI_gset_clear(walker->visit_set, NULL);
+ BLI_gset_clear(walker->visit_set_alt, NULL);
}
diff --git a/source/blender/bmesh/intern/bmesh_walkers.h b/source/blender/bmesh/intern/bmesh_walkers.h
index 8be362b5afa..ea1dbc61cc6 100644
--- a/source/blender/bmesh/intern/bmesh_walkers.h
+++ b/source/blender/bmesh/intern/bmesh_walkers.h
@@ -67,8 +67,8 @@ typedef struct BMWalker {
BMWFlag flag;
- GHash *visithash;
- GHash *secvisithash;
+ GSet *visit_set;
+ GSet *visit_set_alt;
int depth;
} BMWalker;
diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c
index 2fbda777dcc..a68d9ccd2bc 100644
--- a/source/blender/bmesh/intern/bmesh_walkers_impl.c
+++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c
@@ -85,7 +85,7 @@ static void bmw_ShellWalker_visitEdge(BMWalker *walker, BMEdge *e)
{
BMwShellWalker *shellWalk = NULL;
- if (BLI_ghash_haskey(walker->visithash, e)) {
+ if (BLI_gset_haskey(walker->visit_set, e)) {
return;
}
@@ -95,7 +95,7 @@ static void bmw_ShellWalker_visitEdge(BMWalker *walker, BMEdge *e)
shellWalk = BMW_state_add(walker);
shellWalk->curedge = e;
- BLI_ghash_insert(walker->visithash, e, NULL);
+ BLI_gset_insert(walker->visit_set, e);
}
static void bmw_ShellWalker_begin(BMWalker *walker, void *data)
@@ -167,8 +167,8 @@ static void *bmw_ShellWalker_step(BMWalker *walker)
bool restrictpass = true;
BMwShellWalker shellWalk = *((BMwShellWalker *)BMW_current_state(walker));
- if (!BLI_ghash_haskey(walker->visithash, shellWalk.base)) {
- BLI_ghash_insert(walker->visithash, shellWalk.base, NULL);
+ if (!BLI_gset_haskey(walker->visit_set, shellWalk.base)) {
+ BLI_gset_insert(walker->visit_set, shellWalk.base);
}
BMW_state_remove(walker);
@@ -177,7 +177,7 @@ static void *bmw_ShellWalker_step(BMWalker *walker)
/* find the next edge whose other vertex has not been visite */
curedge = shellWalk.curedge;
do {
- if (!BLI_ghash_haskey(walker->visithash, curedge)) {
+ if (!BLI_gset_haskey(walker->visit_set, curedge)) {
if (!walker->restrictflag ||
(walker->restrictflag && BMO_elem_flag_test(walker->bm, curedge, walker->restrictflag)))
{
@@ -187,7 +187,7 @@ static void *bmw_ShellWalker_step(BMWalker *walker)
/* push a new state onto the stac */
newState = BMW_state_add(walker);
- BLI_ghash_insert(walker->visithash, curedge, NULL);
+ BLI_gset_insert(walker->visit_set, curedge);
/* populate the new stat */
@@ -211,7 +211,7 @@ static void bmw_ConnectedVertexWalker_visitVertex(BMWalker *walker, BMVert *v)
{
BMwConnectedVertexWalker *vwalk;
- if (BLI_ghash_haskey(walker->visithash, v)) {
+ if (BLI_gset_haskey(walker->visit_set, v)) {
/* already visited */
return;
}
@@ -223,7 +223,7 @@ static void bmw_ConnectedVertexWalker_visitVertex(BMWalker *walker, BMVert *v)
vwalk = BMW_state_add(walker);
vwalk->curvert = v;
- BLI_ghash_insert(walker->visithash, v, NULL);
+ BLI_gset_insert(walker->visit_set, v);
}
static void bmw_ConnectedVertexWalker_begin(BMWalker *walker, void *data)
@@ -251,7 +251,7 @@ static void *bmw_ConnectedVertexWalker_step(BMWalker *walker)
BM_ITER_ELEM (e, &iter, v, BM_EDGES_OF_VERT) {
v2 = BM_edge_other_vert(e, v);
- if (!BLI_ghash_haskey(walker->visithash, v2)) {
+ if (!BLI_gset_haskey(walker->visit_set, v2)) {
bmw_ConnectedVertexWalker_visitVertex(walker, v2);
}
}
@@ -276,7 +276,7 @@ static void bmw_IslandboundWalker_begin(BMWalker *walker, void *data)
iwalk->base = iwalk->curloop = l;
iwalk->lastv = l->v;
- BLI_ghash_insert(walker->visithash, data, NULL);
+ BLI_gset_insert(walker->visit_set, data);
}
@@ -334,11 +334,11 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker)
if (l == owalk.curloop) {
return NULL;
}
- else if (BLI_ghash_haskey(walker->visithash, l)) {
+ else if (BLI_gset_haskey(walker->visit_set, l)) {
return owalk.curloop;
}
- BLI_ghash_insert(walker->visithash, l, NULL);
+ BLI_gset_insert(walker->visit_set, l);
iwalk = BMW_state_add(walker);
iwalk->base = owalk.base;
@@ -367,7 +367,7 @@ static void bmw_IslandWalker_begin(BMWalker *walker, void *data)
}
iwalk = BMW_state_add(walker);
- BLI_ghash_insert(walker->visithash, data, NULL);
+ BLI_gset_insert(walker->visit_set, data);
iwalk->cur = data;
}
@@ -403,18 +403,18 @@ static void *bmw_IslandWalker_step(BMWalker *walker)
continue;
}
- /* saves checking BLI_ghash_haskey below (manifold edges theres a 50% chance) */
+ /* saves checking BLI_gset_haskey below (manifold edges theres a 50% chance) */
if (f == iwalk->cur) {
continue;
}
- if (BLI_ghash_haskey(walker->visithash, f)) {
+ if (BLI_gset_haskey(walker->visit_set, f)) {
continue;
}
iwalk = BMW_state_add(walker);
iwalk->cur = f;
- BLI_ghash_insert(walker->visithash, f, NULL);
+ BLI_gset_insert(walker->visit_set, f);
break;
}
}
@@ -448,7 +448,7 @@ static void bmw_LoopWalker_begin(BMWalker *walker, void *data)
v = e->v1;
lwalk = BMW_state_add(walker);
- BLI_ghash_insert(walker->visithash, e, NULL);
+ BLI_gset_insert(walker->visit_set, e);
lwalk->cur = lwalk->start = e;
lwalk->lastv = lwalk->startv = v;
@@ -494,8 +494,8 @@ static void bmw_LoopWalker_begin(BMWalker *walker, void *data)
lwalk->lastv = lwalk->startv = BM_edge_other_vert(owalk.cur, lwalk->lastv);
- BLI_ghash_clear(walker->visithash, NULL, NULL);
- BLI_ghash_insert(walker->visithash, owalk.cur, NULL);
+ BLI_gset_clear(walker->visit_set, NULL);
+ BLI_gset_insert(walker->visit_set, owalk.cur);
}
static void *bmw_LoopWalker_yield(BMWalker *walker)
@@ -530,7 +530,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
nexte = BM_edge_exists(v, l->v);
if (bmw_mask_check_edge(walker, nexte) &&
- !BLI_ghash_haskey(walker->visithash, nexte) &&
+ !BLI_gset_haskey(walker->visit_set, nexte) &&
/* never step onto a boundary edge, this gives odd-results */
(BM_edge_is_boundary(nexte) == false))
{
@@ -542,7 +542,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
lwalk->is_single = owalk.is_single;
lwalk->f_hub = owalk.f_hub;
- BLI_ghash_insert(walker->visithash, nexte, NULL);
+ BLI_gset_insert(walker->visit_set, nexte);
}
}
}
@@ -556,7 +556,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
BM_ITER_ELEM (nexte, &eiter, v, BM_EDGES_OF_VERT) {
if ((nexte->l == NULL) &&
bmw_mask_check_edge(walker, nexte) &&
- !BLI_ghash_haskey(walker->visithash, nexte))
+ !BLI_gset_haskey(walker->visit_set, nexte))
{
lwalk = BMW_state_add(walker);
lwalk->cur = nexte;
@@ -566,7 +566,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
lwalk->is_single = owalk.is_single;
lwalk->f_hub = owalk.f_hub;
- BLI_ghash_insert(walker->visithash, nexte, NULL);
+ BLI_gset_insert(walker->visit_set, nexte);
}
}
}
@@ -601,7 +601,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
if (l != NULL) {
if (l != e->l &&
bmw_mask_check_edge(walker, l->e) &&
- !BLI_ghash_haskey(walker->visithash, l->e))
+ !BLI_gset_haskey(walker->visit_set, l->e))
{
lwalk = BMW_state_add(walker);
lwalk->cur = l->e;
@@ -611,7 +611,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
lwalk->is_single = owalk.is_single;
lwalk->f_hub = owalk.f_hub;
- BLI_ghash_insert(walker->visithash, l->e, NULL);
+ BLI_gset_insert(walker->visit_set, l->e);
}
}
}
@@ -654,7 +654,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
if (l != NULL) {
if (l != e->l &&
bmw_mask_check_edge(walker, l->e) &&
- !BLI_ghash_haskey(walker->visithash, l->e))
+ !BLI_gset_haskey(walker->visit_set, l->e))
{
lwalk = BMW_state_add(walker);
lwalk->cur = l->e;
@@ -664,7 +664,7 @@ static void *bmw_LoopWalker_step(BMWalker *walker)
lwalk->is_single = owalk.is_single;
lwalk->f_hub = owalk.f_hub;
- BLI_ghash_insert(walker->visithash, l->e, NULL);
+ BLI_gset_insert(walker->visit_set, l->e);
}
}
}
@@ -694,7 +694,7 @@ static bool bmw_FaceLoopWalker_include_face(BMWalker *walker, BMLoop *l)
}
/* the face must not have been already visited */
- if (BLI_ghash_haskey(walker->visithash, l->f) && BLI_ghash_haskey(walker->secvisithash, l->e)) {
+ if (BLI_gset_haskey(walker->visit_set, l->f) && BLI_gset_haskey(walker->visit_set_alt, l->e)) {
return false;
}
@@ -738,7 +738,7 @@ static void bmw_FaceLoopWalker_begin(BMWalker *walker, void *data)
lwalk = BMW_state_add(walker);
lwalk->l = e->l;
lwalk->no_calc = false;
- BLI_ghash_insert(walker->visithash, lwalk->l->f, NULL);
+ BLI_gset_insert(walker->visit_set, lwalk->l->f);
/* rewind */
while ((owalk_pt = BMW_current_state(walker))) {
@@ -750,11 +750,11 @@ static void bmw_FaceLoopWalker_begin(BMWalker *walker, void *data)
*lwalk = owalk;
lwalk->no_calc = false;
- BLI_ghash_clear(walker->secvisithash, NULL, NULL);
- BLI_ghash_insert(walker->secvisithash, lwalk->l->e, NULL);
+ BLI_gset_clear(walker->visit_set_alt, NULL);
+ BLI_gset_insert(walker->visit_set_alt, lwalk->l->e);
- BLI_ghash_clear(walker->visithash, NULL, NULL);
- BLI_ghash_insert(walker->visithash, lwalk->l->f, NULL);
+ BLI_gset_clear(walker->visit_set, NULL);
+ BLI_gset_insert(walker->visit_set, lwalk->l->f);
}
static void *bmw_FaceLoopWalker_yield(BMWalker *walker)
@@ -804,8 +804,8 @@ static void *bmw_FaceLoopWalker_step(BMWalker *walker)
}
/* both may already exist */
- BLI_ghash_reinsert(walker->secvisithash, l->e, NULL, NULL, NULL);
- BLI_ghash_reinsert(walker->visithash, l->f, NULL, NULL, NULL);
+ BLI_gset_reinsert(walker->visit_set_alt, l->e, NULL);
+ BLI_gset_reinsert(walker->visit_set, l->f, NULL);
}
return f;
@@ -836,7 +836,7 @@ static void bmw_EdgeringWalker_begin(BMWalker *walker, void *data)
lwalk->wireedge = NULL;
}
- BLI_ghash_insert(walker->visithash, lwalk->l->e, NULL);
+ BLI_gset_insert(walker->visit_set, lwalk->l->e);
/* rewind */
while ((owalk_pt = BMW_current_state(walker))) {
@@ -856,8 +856,8 @@ static void bmw_EdgeringWalker_begin(BMWalker *walker, void *data)
lwalk->l = lwalk->l->radial_next;
}
- BLI_ghash_clear(walker->visithash, NULL, NULL);
- BLI_ghash_insert(walker->visithash, lwalk->l->e, NULL);
+ BLI_gset_clear(walker->visit_set, NULL);
+ BLI_gset_insert(walker->visit_set, lwalk->l->e);
}
static void *bmw_EdgeringWalker_yield(BMWalker *walker)
@@ -922,7 +922,7 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker)
}
/* only walk to manifold edge */
if ((l->f->len % 2 == 0) && EDGE_CHECK(l->e) &&
- !BLI_ghash_haskey(walker->visithash, l->e))
+ !BLI_gset_haskey(walker->visit_set, l->e))
#else
@@ -934,14 +934,14 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker)
}
/* only walk to manifold edge */
if ((l->f->len == 4) && EDGE_CHECK(l->e) &&
- !BLI_ghash_haskey(walker->visithash, l->e))
+ !BLI_gset_haskey(walker->visit_set, l->e))
#endif
{
lwalk = BMW_state_add(walker);
lwalk->l = l;
lwalk->wireedge = NULL;
- BLI_ghash_insert(walker->visithash, l->e, NULL);
+ BLI_gset_insert(walker->visit_set, l->e);
}
return e;
@@ -954,12 +954,12 @@ static void bmw_UVEdgeWalker_begin(BMWalker *walker, void *data)
BMwUVEdgeWalker *lwalk;
BMLoop *l = data;
- if (BLI_ghash_haskey(walker->visithash, l))
+ if (BLI_gset_haskey(walker->visit_set, l))
return;
lwalk = BMW_state_add(walker);
lwalk->l = l;
- BLI_ghash_insert(walker->visithash, l, NULL);
+ BLI_gset_insert(walker->visit_set, l);
}
static void *bmw_UVEdgeWalker_yield(BMWalker *walker)
@@ -1001,7 +1001,7 @@ static void *bmw_UVEdgeWalker_step(BMWalker *walker)
rlen = BM_edge_face_count(l2->e);
for (j = 0; j < rlen; j++) {
- if (BLI_ghash_haskey(walker->visithash, l2)) {
+ if (BLI_gset_haskey(walker->visit_set, l2)) {
continue;
}
@@ -1019,7 +1019,7 @@ static void *bmw_UVEdgeWalker_step(BMWalker *walker)
continue;
lwalk = BMW_state_add(walker);
- BLI_ghash_insert(walker->visithash, l2, NULL);
+ BLI_gset_insert(walker->visit_set, l2);
lwalk->l = l2;