27 for (
len = 0; list; list = list->
next) {
38 for (index = 0; list; list = list->
next, index++) {
51 for (i = 0; list; list = list->
next, i++) {
91 if (new_index == curr_index) {
95 if (new_index < curr_index) {
96 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
97 if (i == new_index - 1) {
100 else if (i == curr_index - 1) {
106 if (!(lnk_psrc && lnk_psrc->
next && (!lnk_pdst || lnk_pdst->next))) {
111 lnk = lnk_psrc->
next;
115 lnk_pdst->
next = lnk;
124 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
125 if (i == new_index) {
129 if (i == curr_index - 1) {
134 if (!(lnk_pdst && (!lnk_psrc || lnk_psrc->
next))) {
140 lnk = lnk_psrc->
next;
149 lnk_pdst->
next = lnk;
156 nlink->
next = *listp;
183 if (list_pair->
list) {
189 list_pair->
list = nlink;
216 void *link = (*listp)->link;
217 void *
next = (*listp)->next;
228 void *link = (*listp)->link;
229 void *
next = (*listp)->next;
260 freefunc(list->
link);
274 freefunc(list->
link);
296 for (; list; list = list->
next) {
297 applyfunc(list->
link, userdata);
303 #define SORT_IMPL_LINKTYPE LinkNode
304 #define SORT_IMPL_LINKTYPE_DATA link
307 #define SORT_IMPL_FUNC linklist_sort_fn
309 #undef SORT_IMPL_FUNC
312 #define SORT_IMPL_USE_THUNK
313 #define SORT_IMPL_FUNC linklist_sort_fn_r
315 #undef SORT_IMPL_FUNC
316 #undef SORT_IMPL_USE_THUNK
318 #undef SORT_IMPL_LINKTYPE
319 #undef SORT_IMPL_LINKTYPE_DATA
323 if (list && list->
next) {
324 list = linklist_sort_fn(list, cmp);
330 int (*cmp)(
void *,
const void *,
const void *),
333 if (list && list->
next) {
334 list = linklist_sort_fn_r(list, cmp, thunk);
void BLI_linklist_free_pool(LinkNode *list, LinkNodeFreeFP freefunc, struct BLI_mempool *mempool)
void BLI_linklist_append_pool(LinkNodePair *list_pair, void *ptr, BLI_mempool *mempool)
void BLI_linklist_move_item(LinkNode **listp, int curr_index, int new_index)
void BLI_linklist_prepend(LinkNode **listp, void *ptr)
void BLI_linklist_append_arena(LinkNodePair *list_pair, void *ptr, MemArena *ma)
void BLI_linklist_append(LinkNodePair *list_pair, void *ptr)
void * BLI_linklist_pop(struct LinkNode **listp)
int BLI_linklist_index(const LinkNode *list, void *ptr)
void BLI_linklist_freeN(LinkNode *list)
void BLI_linklist_apply(LinkNode *list, LinkNodeApplyFP applyfunc, void *userdata)
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
void BLI_linklist_prepend_pool(LinkNode **listp, void *ptr, BLI_mempool *mempool)
void BLI_linklist_reverse(LinkNode **listp)
void BLI_linklist_prepend_arena(LinkNode **listp, void *ptr, MemArena *ma)
LinkNode * BLI_linklist_find_last(LinkNode *list)
void * BLI_linklist_pop_pool(struct LinkNode **listp, struct BLI_mempool *mempool)
void BLI_linklist_insert_after(LinkNode **listp, void *ptr)
LinkNode * BLI_linklist_find(LinkNode *list, int index)
void BLI_linklist_append_nlink(LinkNodePair *list_pair, void *ptr, LinkNode *nlink)
int BLI_linklist_count(const LinkNode *list)
LinkNode * BLI_linklist_sort_r(LinkNode *list, int(*cmp)(void *, const void *, const void *), void *thunk)
void BLI_linklist_prepend_nlink(LinkNode **listp, void *ptr, LinkNode *nlink)
LinkNode * BLI_linklist_sort(LinkNode *list, int(*cmp)(const void *, const void *))
void(* LinkNodeApplyFP)(void *link, void *userdata)
void(* LinkNodeFreeFP)(void *link)
void * BLI_memarena_alloc(struct MemArena *ma, size_t size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_ALLOC_SIZE(2)
void BLI_mempool_free(BLI_mempool *pool, void *addr) ATTR_NONNULL(1
void * BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
Strict compiler flags for areas of code we want to ensure don't do conversions without us knowing abo...
Read Guarded memory(de)allocation.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)