44 for (
len = 0; list; list = list->
next) {
55 for (index = 0; list; list = list->
next, index++) {
68 for (i = 0; list; list = list->
next, i++) {
112 if (new_index == curr_index) {
116 if (new_index < curr_index) {
117 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
118 if (i == new_index - 1) {
121 else if (i == curr_index - 1) {
127 if (!(lnk_psrc && lnk_psrc->
next && (!lnk_pdst || lnk_pdst->next))) {
132 lnk = lnk_psrc->
next;
136 lnk_pdst->
next = lnk;
145 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
146 if (i == new_index) {
150 if (i == curr_index - 1) {
155 if (!(lnk_pdst && (!lnk_psrc || lnk_psrc->
next))) {
161 lnk = lnk_psrc->
next;
170 lnk_pdst->
next = lnk;
180 nlink->
next = *listp;
210 if (list_pair->
list) {
216 list_pair->
list = nlink;
243 void *link = (*listp)->link;
244 void *
next = (*listp)->next;
255 void *link = (*listp)->link;
256 void *
next = (*listp)->next;
287 freefunc(list->
link);
301 freefunc(list->
link);
323 for (; list; list = list->
next) {
324 applyfunc(list->
link, userdata);
330 #define SORT_IMPL_LINKTYPE LinkNode
331 #define SORT_IMPL_LINKTYPE_DATA link
334 #define SORT_IMPL_FUNC linklist_sort_fn
336 #undef SORT_IMPL_FUNC
339 #define SORT_IMPL_USE_THUNK
340 #define SORT_IMPL_FUNC linklist_sort_fn_r
342 #undef SORT_IMPL_FUNC
343 #undef SORT_IMPL_USE_THUNK
345 #undef SORT_IMPL_LINKTYPE
346 #undef SORT_IMPL_LINKTYPE_DATA
350 if (list && list->
next) {
351 list = linklist_sort_fn(list, cmp);
357 int (*cmp)(
void *,
const void *,
const void *),
360 if (list && list->
next) {
361 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_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)