diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-26 00:03:45 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-26 00:03:45 +0400 |
commit | bbce51d11691acc561f1684c20e60613941d4e9b (patch) | |
tree | ada2418ebb181015b561df9e9c92035ee2a84b43 /source/blender/bmesh/intern | |
parent | 1d5eff36f5bd7fc7986e59d4dbe7b885ccb50e61 (diff) |
replace hashes with sets where possible.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers.c | 12 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers.h | 4 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers_impl.c | 90 |
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; |