librfn
An ad-hoc utility library
Data Structures | Macros | Typedefs | Functions
Singly linked list

A singly linked list with fast head/tail insertion and sorted insert support. More...

Data Structures

struct  list_node
 
struct  list_t
 
struct  list_iterator_t
 

Macros

#define LIST_NODE_VAR_INIT   { 0 }
 
#define LIST_VAR_INIT   { 0 }
 

Typedefs

typedef struct list_node list_node_t
 
typedef int list_node_compare_t(list_node_t *, list_node_t *)
 

Functions

void list_insert (list_t *list, list_node_t *node)
 
void list_insert_sorted (list_t *list, list_node_t *node, list_node_compare_t *nodecmp)
 
void list_push (list_t *list, list_node_t *node)
 
list_node_tlist_extract (list_t *list)
 
list_node_tlist_iterate (list_t *list, list_iterator_t *iter)
 
list_node_tlist_iterator_next (list_iterator_t *iter)
 
void list_iterator_insert (list_iterator_t *iter, list_node_t *node)
 
list_node_tlist_iterator_remove (list_iterator_t *iter)
 
bool list_contains (list_t *list, list_node_t *node, list_iterator_t *iter)
 
bool list_remove (list_t *list, list_node_t *node)
 

Detailed Description

A singly linked list with fast head/tail insertion and sorted insert support.

No form of internal locking or other thread-safety is provided.

Note
Fibres on uniprocessor systems do not require thread-safety support and may freely use the list.

Macro Definition Documentation

#define LIST_NODE_VAR_INIT   { 0 }

Definition at line 37 of file list.h.

#define LIST_VAR_INIT   { 0 }

Definition at line 43 of file list.h.

Typedef Documentation

typedef int list_node_compare_t(list_node_t *, list_node_t *)

Definition at line 50 of file list.h.

typedef struct list_node list_node_t

Function Documentation

bool list_contains ( list_t list,
list_node_t node,
list_iterator_t iter 
)

Definition at line 155 of file list.c.

list_node_t* list_extract ( list_t list)

Definition at line 77 of file list.c.

void list_insert ( list_t list,
list_node_t node 
)

Definition at line 21 of file list.c.

void list_insert_sorted ( list_t list,
list_node_t node,
list_node_compare_t nodecmp 
)

Definition at line 34 of file list.c.

list_node_t* list_iterate ( list_t list,
list_iterator_t iter 
)

Definition at line 91 of file list.c.

void list_iterator_insert ( list_iterator_t iter,
list_node_t node 
)

Definition at line 113 of file list.c.

list_node_t* list_iterator_next ( list_iterator_t iter)

Definition at line 99 of file list.c.

list_node_t* list_iterator_remove ( list_iterator_t iter)

Definition at line 124 of file list.c.

void list_push ( list_t list,
list_node_t node 
)

Definition at line 65 of file list.c.

bool list_remove ( list_t list,
list_node_t node 
)

Definition at line 171 of file list.c.