bool list_push_back(list_node_t **list, list_node_t *node)
Add a node at the end of the doubly-linked list.
bool(* f_list_node_cmp)(const flist_node_t *a, const flist_node_t *b)
Callback function to compare two nodes for sorting.
bool flist_sort(flist_node_t **list, f_list_node_cmp cmp_func)
Sort the forward list using a comparison function.
bool flist_reverse(flist_node_t **list)
Reverse the order of nodes in the forward list.
bool list_remove(list_node_t **list, list_node_t *node, f_list_node_del del_func)
Remove and delete a specific node from the doubly-linked list.
size_t flist_remove_if(flist_node_t **list, f_list_node_pred pred_func, f_list_node_del del_func)
Remove all nodes matching a predicate from the forward list.
bool flist_push_back(flist_node_t **list, flist_node_t *node)
Add a node at the end of the forward list.
bool flist_pop_front(flist_node_t **list, f_list_node_del del_func)
Remove and delete the first node from the forward list.
size_t flist_size(flist_node_t *const *list)
Get the number of nodes in the forward list.
bool list_clear(list_node_t **list, f_list_node_del del_func)
Remove and delete all nodes from the doubly-linked list.
bool list_sort(list_node_t **list, f_list_node_cmp cmp_func)
Sort the doubly-linked list using a comparison function.
bool list_pop_front(list_node_t **list, f_list_node_del del_func)
Remove and delete the first node from the doubly-linked list.
bool list_pop_back(list_node_t **list, f_list_node_del del_func)
Remove and delete the last node from the doubly-linked list.
bool list_empty(list_node_t *const *list)
Check if the doubly-linked list is empty.
bool flist_insert_after(flist_node_t **list, flist_node_t *ref, flist_node_t *node)
Insert a node after a reference node in the forward list.
bool flist_remove(flist_node_t **list, flist_node_t *node, f_list_node_del del_func)
Remove and delete a specific node from the forward list.
size_t list_size(list_node_t *const *list)
Get the number of nodes in the doubly-linked list.
bool list_insert_before(list_node_t **list, list_node_t *ref, list_node_t *node)
Insert a node before a reference node in the doubly-linked list.
size_t flist_unique(flist_node_t **list, f_list_node_bin_pred pred_func, f_list_node_del del_func)
Remove consecutive duplicate nodes from the forward list.
bool flist_empty(flist_node_t *const *list)
Check if the forward list is empty.
bool list_reverse(list_node_t **list)
Reverse the order of nodes in the doubly-linked list.
size_t list_unique(list_node_t **list, f_list_node_bin_pred pred_func, f_list_node_del del_func)
Remove consecutive duplicate nodes from the doubly-linked list.
bool list_push_front(list_node_t **list, list_node_t *node)
Add a node at the beginning of the doubly-linked list.
bool flist_push_front(flist_node_t **list, flist_node_t *node)
Add a node at the beginning of the forward list.
size_t list_remove_if(list_node_t **list, f_list_node_pred pred_func, f_list_node_del del_func)
Remove all nodes matching a predicate from the doubly-linked list.
bool flist_clear(flist_node_t **list, f_list_node_del del_func)
Remove and delete all nodes from the forward list.
bool(* f_list_node_bin_pred)(const flist_node_t *a, const flist_node_t *b)
Callback function to test two nodes for equality (binary predicate)
void(* f_list_node_del)(flist_node_t *node)
Callback function to delete/free a node.
bool flist_pop_back(flist_node_t **list, f_list_node_del del_func)
Remove and delete the last node from the forward list.
bool(* f_list_node_pred)(const flist_node_t *node)
Callback function to test a single node (unary predicate)
bool list_insert_after(list_node_t **list, list_node_t *ref, list_node_t *node)
Insert a node after a reference node in the doubly-linked list.
Forward list node structure (singly-linked)
struct flist_node_t * next
Doubly-linked list node structure.
struct list_node_t * prev