GSet, GHash: Add BLI_gset_add, since its common to add members to a set
also rename BLI_edgeset_reinsert -> BLI_edgeset_add, in this case its the same.
This commit is contained in:
parent
8bd4b7361b
commit
365ff66987
|
@ -2805,15 +2805,15 @@ void CDDM_calc_edges_tessface(DerivedMesh *dm)
|
|||
eh = BLI_edgeset_new_ex(__func__, BLI_EDGEHASH_SIZE_GUESS_FROM_POLYS(numFaces));
|
||||
|
||||
for (i = 0; i < numFaces; i++, mf++) {
|
||||
BLI_edgeset_reinsert(eh, mf->v1, mf->v2);
|
||||
BLI_edgeset_reinsert(eh, mf->v2, mf->v3);
|
||||
BLI_edgeset_add(eh, mf->v1, mf->v2);
|
||||
BLI_edgeset_add(eh, mf->v2, mf->v3);
|
||||
|
||||
if (mf->v4) {
|
||||
BLI_edgeset_reinsert(eh, mf->v3, mf->v4);
|
||||
BLI_edgeset_reinsert(eh, mf->v4, mf->v1);
|
||||
BLI_edgeset_add(eh, mf->v3, mf->v4);
|
||||
BLI_edgeset_add(eh, mf->v4, mf->v1);
|
||||
}
|
||||
else {
|
||||
BLI_edgeset_reinsert(eh, mf->v3, mf->v1);
|
||||
BLI_edgeset_add(eh, mf->v3, mf->v1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1323,14 +1323,14 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm )
|
|||
|
||||
/* insert other near springs in edgeset AFTER bending springs are calculated (for selfcolls) */
|
||||
for (i = 0; i < numedges; i++) { /* struct springs */
|
||||
BLI_edgeset_reinsert(edgeset, medge[i].v1, medge[i].v2);
|
||||
BLI_edgeset_add(edgeset, medge[i].v1, medge[i].v2);
|
||||
}
|
||||
|
||||
for (i = 0; i < numfaces; i++) { /* edge springs */
|
||||
if (mface[i].v4) {
|
||||
BLI_edgeset_reinsert(edgeset, mface[i].v1, mface[i].v3);
|
||||
BLI_edgeset_add(edgeset, mface[i].v1, mface[i].v3);
|
||||
|
||||
BLI_edgeset_reinsert(edgeset, mface[i].v2, mface[i].v4);
|
||||
BLI_edgeset_add(edgeset, mface[i].v2, mface[i].v4);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ static void pbvh_bmesh_node_finalize(PBVH *bvh, int node_index, const int cd_ver
|
|||
v = l_iter->v;
|
||||
if (!BLI_gset_haskey(n->bm_unique_verts, v)) {
|
||||
if (BM_ELEM_CD_GET_INT(v, cd_vert_node_offset) != DYNTOPO_NODE_NONE) {
|
||||
BLI_gset_reinsert(n->bm_other_verts, v, NULL);
|
||||
BLI_gset_add(n->bm_other_verts, v);
|
||||
}
|
||||
else {
|
||||
BLI_gset_insert(n->bm_unique_verts, v);
|
||||
|
|
|
@ -360,7 +360,7 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm,
|
|||
MVert *mv0 = mvert + (ml[j_next].v);
|
||||
MVert *mv1 = mvert + (ml[j].v);
|
||||
|
||||
if (BLI_edgeset_reinsert(eset, v0, v1)) {
|
||||
if (BLI_edgeset_add(eset, v0, v1)) {
|
||||
CCGEdge *e, *orige = ccgSubSurf_getFaceEdge(origf, j_next);
|
||||
CCGEdgeHDL ehdl = SET_INT_IN_POINTER(mp->loopstart + j_next);
|
||||
float crease;
|
||||
|
|
|
@ -102,7 +102,7 @@ EdgeSet *BLI_edgeset_new_ex(const char *info,
|
|||
const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT;
|
||||
EdgeSet *BLI_edgeset_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT;
|
||||
int BLI_edgeset_size(EdgeSet *es) ATTR_WARN_UNUSED_RESULT;
|
||||
bool BLI_edgeset_reinsert(EdgeSet *es, unsigned int v0, unsigned int v1);
|
||||
bool BLI_edgeset_add(EdgeSet *es, unsigned int v0, unsigned int v1);
|
||||
void BLI_edgeset_insert(EdgeSet *es, unsigned int v0, unsigned int v1);
|
||||
bool BLI_edgeset_haskey(EdgeSet *eh, unsigned int v0, unsigned int v1) ATTR_WARN_UNUSED_RESULT;
|
||||
void BLI_edgeset_free(EdgeSet *es);
|
||||
|
|
|
@ -191,6 +191,7 @@ GSet *BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_M
|
|||
int BLI_gset_size(GSet *gs) ATTR_WARN_UNUSED_RESULT;
|
||||
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp);
|
||||
void BLI_gset_insert(GSet *gh, void *key);
|
||||
bool BLI_gset_add(GSet *gs, void *key);
|
||||
bool BLI_gset_reinsert(GSet *gh, void *key, GSetKeyFreeFP keyfreefp);
|
||||
bool BLI_gset_haskey(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT;
|
||||
bool BLI_gset_remove(GSet *gs, void *key, GSetKeyFreeFP keyfreefp);
|
||||
|
|
|
@ -900,6 +900,25 @@ void BLI_gset_insert(GSet *gs, void *key)
|
|||
ghash_insert_ex_keyonly((GHash *)gs, key, hash);
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of BLI_gset_insert which checks first if the key is in the set.
|
||||
* \returns true if a new key has been added.
|
||||
*
|
||||
* \note GHash has no equivalent to this because typically the value would be different.
|
||||
*/
|
||||
bool BLI_gset_add(GSet *gs, void *key)
|
||||
{
|
||||
const unsigned int hash = ghash_keyhash((GHash *)gs, key);
|
||||
Entry *e = ghash_lookup_entry_ex((GHash *)gs, key, hash);
|
||||
if (e) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
ghash_insert_ex_keyonly((GHash *)gs, key, hash);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the key to the set (duplicates are managed).
|
||||
* Matching #BLI_ghash_reinsert
|
||||
|
|
|
@ -588,9 +588,12 @@ void BLI_edgeset_insert(EdgeSet *es, unsigned int v0, unsigned int v1)
|
|||
}
|
||||
|
||||
/**
|
||||
* Assign a new value to a key that may already be in edgehash.
|
||||
* A version of BLI_edgeset_insert which checks first if the key is in the set.
|
||||
* \returns true if a new key has been added.
|
||||
*
|
||||
* \note EdgeHash has no equivalent to this because typically the value would be different.
|
||||
*/
|
||||
bool BLI_edgeset_reinsert(EdgeSet *es, unsigned int v0, unsigned int v1)
|
||||
bool BLI_edgeset_add(EdgeSet *es, unsigned int v0, unsigned int v1)
|
||||
{
|
||||
unsigned int hash;
|
||||
EdgeEntry *e;
|
||||
|
|
|
@ -919,8 +919,8 @@ static void *bmw_FaceLoopWalker_step(BMWalker *walker)
|
|||
}
|
||||
|
||||
/* both may already exist */
|
||||
BLI_gset_reinsert(walker->visit_set_alt, l->e, NULL);
|
||||
BLI_gset_reinsert(walker->visit_set, l->f, NULL);
|
||||
BLI_gset_add(walker->visit_set_alt, l->e);
|
||||
BLI_gset_add(walker->visit_set, l->f);
|
||||
}
|
||||
|
||||
return f;
|
||||
|
|
|
@ -2595,7 +2595,7 @@ static size_t animdata_filter_remove_duplis(ListBase *anim_data)
|
|||
* - just use ale->data for now, though it would be nicer to involve
|
||||
* ale->type in combination too to capture corner cases (where same data performs differently)
|
||||
*/
|
||||
if (BLI_gset_reinsert(gs, ale->data, NULL)) {
|
||||
if (BLI_gset_add(gs, ale->data)) {
|
||||
/* this entry is 'unique' and can be kept */
|
||||
items++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue