Blender V4.5
BLI_linklist.h File Reference

Go to the source code of this file.

Classes

struct  LinkNode
struct  LinkNodePair

Macros

#define BLI_linklist_prepend_alloca(listp, ptr)
#define BLI_linklist_append_alloca(list_pair, ptr)

Typedefs

typedef void(*) LinkNodeFreeFP(void *link)
typedef void(*) LinkNodeApplyFP(void *link, void *userdata)
typedef struct LinkNode LinkNode
typedef struct LinkNodePair LinkNodePair

Functions

int BLI_linklist_count (const LinkNode *list) ATTR_WARN_UNUSED_RESULT
int BLI_linklist_index (const LinkNode *list, const void *ptr) ATTR_WARN_UNUSED_RESULT
LinkNodeBLI_linklist_find (LinkNode *list, int index) ATTR_WARN_UNUSED_RESULT
LinkNodeBLI_linklist_find_last (LinkNode *list) ATTR_WARN_UNUSED_RESULT
void BLI_linklist_reverse (LinkNode **listp) ATTR_NONNULL(1)
void BLI_linklist_move_item (LinkNode **listp, int curr_index, int new_index) ATTR_NONNULL(1)
void BLI_linklist_prepend_nlink (LinkNode **listp, void *ptr, LinkNode *nlink) ATTR_NONNULL(1
void void BLI_linklist_prepend (LinkNode **listp, void *ptr) ATTR_NONNULL(1)
void BLI_linklist_prepend_arena (LinkNode **listp, void *ptr, struct MemArena *ma) ATTR_NONNULL(1
void void BLI_linklist_prepend_pool (LinkNode **listp, void *ptr, struct BLI_mempool *mempool) ATTR_NONNULL(1
void void void BLI_linklist_append_nlink (LinkNodePair *list_pair, void *ptr, LinkNode *nlink) ATTR_NONNULL(1
void void void void BLI_linklist_append (LinkNodePair *list_pair, void *ptr) ATTR_NONNULL(1)
void BLI_linklist_append_arena (LinkNodePair *list_pair, void *ptr, struct MemArena *ma) ATTR_NONNULL(1
void void BLI_linklist_append_pool (LinkNodePair *list_pair, void *ptr, struct BLI_mempool *mempool) ATTR_NONNULL(1
void void void * BLI_linklist_pop (LinkNode **listp) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_linklist_pop_pool (LinkNode **listp, struct BLI_mempool *mempool) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void void BLI_linklist_insert_after (LinkNode **listp, void *ptr) ATTR_NONNULL(1)
void BLI_linklist_free (LinkNode *list, LinkNodeFreeFP freefunc)
void BLI_linklist_freeN (LinkNode *list)
void BLI_linklist_free_pool (LinkNode *list, LinkNodeFreeFP freefunc, struct BLI_mempool *mempool)
void BLI_linklist_apply (LinkNode *list, LinkNodeApplyFP applyfunc, void *userdata)
LinkNodeBLI_linklist_sort (LinkNode *list, int(*cmp)(const void *, const void *)) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
LinkNodeBLI_linklist_sort_r (LinkNode *list, int(*cmp)(void *, const void *, const void *), void *thunk) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)

Macro Definition Documentation

◆ BLI_linklist_append_alloca

#define BLI_linklist_append_alloca ( list_pair,
ptr )
Value:
BLI_linklist_append_nlink(list_pair, ptr, (LinkNode *)alloca(sizeof(LinkNode)))

Definition at line 89 of file BLI_linklist.h.

◆ BLI_linklist_prepend_alloca

Typedef Documentation

◆ LinkNode

typedef struct LinkNode LinkNode

◆ LinkNodeApplyFP

typedef void(*) LinkNodeApplyFP(void *link, void *userdata)

Definition at line 17 of file BLI_linklist.h.

◆ LinkNodeFreeFP

typedef void(*) LinkNodeFreeFP(void *link)

Definition at line 16 of file BLI_linklist.h.

◆ LinkNodePair

typedef struct LinkNodePair LinkNodePair

Use for append (single linked list, storing the last element).

Note
list manipulation functions don't operate on this struct. This is only to be used while appending.

Function Documentation

◆ BLI_linklist_append()

◆ BLI_linklist_append_arena()

◆ BLI_linklist_append_nlink()

void void void BLI_linklist_append_nlink ( LinkNodePair * list_pair,
void * ptr,
LinkNode * nlink )

◆ BLI_linklist_append_pool()

void void BLI_linklist_append_pool ( LinkNodePair * list_pair,
void * ptr,
struct BLI_mempool * mempool )

◆ BLI_linklist_apply()

void BLI_linklist_apply ( LinkNode * list,
LinkNodeApplyFP applyfunc,
void * userdata )

Definition at line 295 of file BLI_linklist.cc.

References BLI_linklist_apply(), LinkNode::link, and LinkNode::next.

Referenced by BLI_linklist_apply(), and BLI_linklist_pop_pool().

◆ BLI_linklist_count()

int BLI_linklist_count ( const LinkNode * list)

◆ BLI_linklist_find()

LinkNode * BLI_linklist_find ( LinkNode * list,
int index )

Definition at line 48 of file BLI_linklist.cc.

References BLI_linklist_find(), i, and LinkNode::next.

Referenced by BLI_linklist_find().

◆ BLI_linklist_find_last()

LinkNode * BLI_linklist_find_last ( LinkNode * list)

Definition at line 61 of file BLI_linklist.cc.

References BLI_linklist_find_last(), and LinkNode::next.

Referenced by BLI_linklist_find_last().

◆ BLI_linklist_free()

◆ BLI_linklist_free_pool()

◆ BLI_linklist_freeN()

◆ BLI_linklist_index()

◆ BLI_linklist_insert_after()

void void BLI_linklist_insert_after ( LinkNode ** listp,
void * ptr )

◆ BLI_linklist_move_item()

void BLI_linklist_move_item ( LinkNode ** listp,
int curr_index,
int new_index )

Move an item from its current position to a new one inside a single-linked list.

Note
*listp may be modified.

Definition at line 87 of file BLI_linklist.cc.

References BLI_linklist_move_item(), i, and LinkNode::next.

Referenced by BLI_linklist_move_item(), and bookmark_move_exec().

◆ BLI_linklist_pop()

◆ BLI_linklist_pop_pool()

◆ BLI_linklist_prepend()

◆ BLI_linklist_prepend_arena()

◆ BLI_linklist_prepend_nlink()

◆ BLI_linklist_prepend_pool()

◆ BLI_linklist_reverse()

void BLI_linklist_reverse ( LinkNode ** listp)

◆ BLI_linklist_sort()

LinkNode * BLI_linklist_sort ( LinkNode * list,
int(* cmp )(const void *, const void *) )

◆ BLI_linklist_sort_r()

LinkNode * BLI_linklist_sort_r ( LinkNode * list,
int(* cmp )(void *, const void *, const void *),
void * thunk )

Definition at line 330 of file BLI_linklist.cc.

References BLI_linklist_sort_r(), and LinkNode::next.

Referenced by BLI_linklist_pop_pool(), and BLI_linklist_sort_r().