PebbleOS
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
slist.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include "order.h"

Data Structures

struct  SingleListNode
 Singly linked list node, embedded in the listed structure. More...
 

Macros

#define SINGLE_LIST_NODE_NULL   {.next = NULL}
 Initializer of an unlinked node.
 

Typedefs

typedef bool(* SingleListFilterCallback) (SingleListNode *found_node, void *data)
 Filter for slist_find().
 
typedef bool(* SingleListForEachCallback) (SingleListNode *node, void *context)
 Callback for slist_foreach().
 

Functions

void slist_init (SingleListNode *node)
 Initialize a node as unlinked.
 
SingleListNode * slist_insert_after (SingleListNode *node, SingleListNode *new_node)
 Insert a node after another one.
 
SingleListNode * slist_prepend (SingleListNode *head, SingleListNode *new_node)
 Prepend a node to a list.
 
SingleListNode * slist_append (SingleListNode *head, SingleListNode *new_node)
 Append a node to the tail of a list.
 
SingleListNode * slist_pop_head (SingleListNode *head)
 Unlink the head of a list.
 
void slist_remove (SingleListNode *node, SingleListNode **head)
 Unlink a node from a list.
 
SingleListNode * slist_get_next (SingleListNode *node)
 Get the next node.
 
SingleListNode * slist_get_tail (SingleListNode *node)
 Get the tail of a list.
 
bool slist_is_tail (const SingleListNode *node)
 Check whether a node is the tail of its list.
 
uint32_t slist_count (SingleListNode *head)
 Count the nodes of a list.
 
bool slist_contains (const SingleListNode *head, const SingleListNode *node)
 Check whether a list contains a node.
 
SingleListNode * slist_find (SingleListNode *head, SingleListFilterCallback filter_callback, void *data)
 Find the first matching node.
 
SingleListNode * slist_sorted_add (SingleListNode *head, SingleListNode *new_node, Comparator comparator, bool ascending)
 Insert a node into a sorted list, keeping it sorted.
 
SingleListNode * slist_concatenate (SingleListNode *list_a, SingleListNode *list_b)
 Append a list to another one.
 
void slist_foreach (SingleListNode *head, SingleListForEachCallback each_cb, void *context)
 Call a function on each node of a list.
 
void slist_debug_dump (SingleListNode *head)
 Log every node of a list with UTIL_LOG().