diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-16 17:02:34 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-16 17:02:34 +0400 |
commit | 1677758e459dbbbc0ad8bd2cd87bfaf925414952 (patch) | |
tree | 312208c4701ca3fb88bf3f9ece944faf06b0de1d /source/blender/blenlib/intern/BLI_linklist.c | |
parent | d75e14b31e5e65d1e38b1ca4688a42a346ac9495 (diff) |
new bmesh queries BM_face_exists_overlap, BM_face_exists_overlap_subset
the subset version of the function checks if any faces has all its verts in the given array.
also made some additions to linklist functions (arena and pool versions of append).
Diffstat (limited to 'source/blender/blenlib/intern/BLI_linklist.c')
-rw-r--r-- | source/blender/blenlib/intern/BLI_linklist.c | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/source/blender/blenlib/intern/BLI_linklist.c b/source/blender/blenlib/intern/BLI_linklist.c index 99fc5f27726..66fcfd21fbb 100644 --- a/source/blender/blenlib/intern/BLI_linklist.c +++ b/source/blender/blenlib/intern/BLI_linklist.c @@ -89,18 +89,39 @@ void BLI_linklist_reverse(LinkNode **listp) *listp = rhead; } -void BLI_linklist_prepend(LinkNode **listp, void *ptr) +/** + * A version of prepend that takes the allocated link. + */ +void BLI_linklist_prepend_nlink(LinkNode **listp, void *ptr, LinkNode *nlink) { - LinkNode *nlink = MEM_mallocN(sizeof(*nlink), "nlink"); nlink->link = ptr; - nlink->next = *listp; *listp = nlink; } -void BLI_linklist_append(LinkNode **listp, void *ptr) +void BLI_linklist_prepend(LinkNode **listp, void *ptr) { LinkNode *nlink = MEM_mallocN(sizeof(*nlink), "nlink"); + BLI_linklist_prepend_nlink(listp, ptr, nlink); +} + +void BLI_linklist_prepend_arena(LinkNode **listp, void *ptr, MemArena *ma) +{ + LinkNode *nlink = BLI_memarena_alloc(ma, sizeof(*nlink)); + BLI_linklist_prepend_nlink(listp, ptr, nlink); +} + +void BLI_linklist_prepend_pool(LinkNode **listp, void *ptr, BLI_mempool *mempool) +{ + LinkNode *nlink = BLI_mempool_alloc(mempool); + BLI_linklist_prepend_nlink(listp, ptr, nlink); +} + +/** + * A version of append that takes the allocated link. + */ +void BLI_linklist_append_nlink(LinkNode **listp, void *ptr, LinkNode *nlink) +{ LinkNode *node = *listp; nlink->link = ptr; @@ -117,22 +138,22 @@ void BLI_linklist_append(LinkNode **listp, void *ptr) } } -void BLI_linklist_prepend_arena(LinkNode **listp, void *ptr, MemArena *ma) +void BLI_linklist_append(LinkNode **listp, void *ptr) +{ + LinkNode *nlink = MEM_mallocN(sizeof(*nlink), "nlink"); + BLI_linklist_append_nlink(listp, ptr, nlink); +} + +void BLI_linklist_append_arena(LinkNode **listp, void *ptr, MemArena *ma) { LinkNode *nlink = BLI_memarena_alloc(ma, sizeof(*nlink)); - nlink->link = ptr; - - nlink->next = *listp; - *listp = nlink; + BLI_linklist_append_nlink(listp, ptr, nlink); } -void BLI_linklist_prepend_pool(LinkNode **listp, void *ptr, BLI_mempool *mempool) +void BLI_linklist_append_pool(LinkNode **listp, void *ptr, BLI_mempool *mempool) { LinkNode *nlink = BLI_mempool_alloc(mempool); - nlink->link = ptr; - - nlink->next = *listp; - *listp = nlink; + BLI_linklist_append_nlink(listp, ptr, nlink); } void *BLI_linklist_pop(struct LinkNode **listp) |