28 for (
len = 0; list; list = list->next) {
39 for (index = 0; list; list = list->next, index++) {
40 if (list->link ==
ptr) {
52 for (i = 0; list; list = list->next, i++) {
92 if (new_index == curr_index) {
96 if (new_index < curr_index) {
97 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
98 if (i == new_index - 1) {
101 else if (i == curr_index - 1) {
107 if (!(lnk_psrc && lnk_psrc->
next && (!lnk_pdst || lnk_pdst->next))) {
112 lnk = lnk_psrc->
next;
116 lnk_pdst->
next = lnk;
125 for (lnk = *listp, i = 0; lnk; lnk = lnk->
next, i++) {
126 if (i == new_index) {
130 if (i == curr_index - 1) {
135 if (!(lnk_pdst && (!lnk_psrc || lnk_psrc->
next))) {
141 lnk = lnk_psrc->
next;
150 lnk_pdst->
next = lnk;
157 nlink->
next = *listp;
184 if (list_pair->
list) {
190 list_pair->
list = nlink;
217 void *link = (*listp)->link;
218 void *
next = (*listp)->next;
229 void *link = (*listp)->
link;
230 void *
next = (*listp)->next;
261 freefunc(list->link);
275 freefunc(list->link);
297 for (; list; list = list->next) {
298 applyfunc(list->link, userdata);
304#define SORT_IMPL_LINKTYPE LinkNode
305#define SORT_IMPL_LINKTYPE_DATA link
308#define SORT_IMPL_FUNC linklist_sort_fn
313#define SORT_IMPL_USE_THUNK
314#define SORT_IMPL_FUNC linklist_sort_fn_r
317#undef SORT_IMPL_USE_THUNK
319#undef SORT_IMPL_LINKTYPE
320#undef SORT_IMPL_LINKTYPE_DATA
324 if (list && list->next) {
325 list = linklist_sort_fn(list, cmp);
331 int (*cmp)(
void *,
const void *,
const void *),
334 if (list && list->next) {
335 list = linklist_sort_fn_r(list, cmp, thunk);
LinkNode * BLI_linklist_find(LinkNode *list, int index)
LinkNode * BLI_linklist_find_last(LinkNode *list)
void BLI_linklist_append_pool(LinkNodePair *list_pair, void *ptr, BLI_mempool *mempool)
void BLI_linklist_free_pool(LinkNode *list, LinkNodeFreeFP freefunc, 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_pop(LinkNode **listp)
void BLI_linklist_append(LinkNodePair *list_pair, 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)
LinkNode * BLI_linklist_sort(LinkNode *list, int(*cmp)(const void *, const void *))
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)
void BLI_linklist_insert_after(LinkNode **listp, void *ptr)
LinkNode * BLI_linklist_sort_r(LinkNode *list, int(*cmp)(void *, const void *, const void *), void *thunk)
void BLI_linklist_append_nlink(LinkNodePair *list_pair, void *ptr, LinkNode *nlink)
void * BLI_linklist_pop_pool(LinkNode **listp, BLI_mempool *mempool)
int BLI_linklist_count(const LinkNode *list)
int BLI_linklist_index(const LinkNode *list, const void *ptr)
void BLI_linklist_prepend_nlink(LinkNode **listp, void *ptr, LinkNode *nlink)
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_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
void BLI_mempool_free(BLI_mempool *pool, void *addr) ATTR_NONNULL(1
Read Guarded memory(de)allocation.
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)