libannodex  0.7.3
Data Structures | Typedefs | Functions
anx_list.h File Reference
#include <annodex/anx_core.h>

Go to the source code of this file.

Data Structures

struct  _AnxList
 

Typedefs

typedef struct _AnxList AnxList
 A doubly linked list.
 

Functions

AnxListanx_list_new (void)
 Create a new list. More...
 
AnxListanx_list_clone (AnxList *list)
 Clone a list using the default clone function. More...
 
AnxListanx_list_clone_with (AnxList *list, AnxCloneFunc clone)
 Clone a list using a custom clone function. More...
 
AnxListanx_list_tail (AnxList *list)
 Return the tail element of a list. More...
 
AnxListanx_list_prepend (AnxList *list, void *data)
 Prepend a new node to a list containing given data. More...
 
AnxListanx_list_append (AnxList *list, void *data)
 Append a new node to a list containing given data. More...
 
AnxListanx_list_add_before (AnxList *list, void *data, AnxList *node)
 Add a new node containing given data before a given node. More...
 
AnxListanx_list_add_after (AnxList *list, void *data, AnxList *node)
 Add a new node containing given data after a given node. More...
 
AnxListanx_list_find (AnxList *list, void *data)
 Find the first node containing given data in a list. More...
 
AnxListanx_list_remove (AnxList *list, AnxList *node)
 Remove a node from a list. More...
 
int anx_list_length (AnxList *list)
 Query the number of items in a list. More...
 
int anx_list_is_empty (AnxList *list)
 Query if a list is empty, ie. More...
 
int anx_list_is_singleton (AnxList *list)
 Query if the list is singleton, ie. More...
 
AnxListanx_list_free_with (AnxList *list, AnxFreeFunc free_func)
 Free a list, using a given function to free each data element. More...
 
AnxListanx_list_free (AnxList *list)
 Free a list, using anx_free() to free each data element. More...
 

Detailed Description

A doubly linked list

Function Documentation

◆ anx_list_add_after()

AnxList* anx_list_add_after ( AnxList list,
void *  data,
AnxList node 
)

Add a new node containing given data after a given node.

Parameters
listthe list
datathe data element of the newly created node
nodethe node after which to add the newly created node
Returns
the head of the list

◆ anx_list_add_before()

AnxList* anx_list_add_before ( AnxList list,
void *  data,
AnxList node 
)

Add a new node containing given data before a given node.

Parameters
listthe list
datathe data element of the newly created node
nodethe node before which to add the newly created node
Returns
the head of the list (which may have changed)

◆ anx_list_append()

AnxList* anx_list_append ( AnxList list,
void *  data 
)

Append a new node to a list containing given data.

Parameters
listthe list
datathe data element of the newly created node
Returns
the head of the list

◆ anx_list_clone()

AnxList* anx_list_clone ( AnxList list)

Clone a list using the default clone function.

Parameters
listthe list to clone
Returns
a newly cloned list

◆ anx_list_clone_with()

AnxList* anx_list_clone_with ( AnxList list,
AnxCloneFunc  clone 
)

Clone a list using a custom clone function.

Parameters
listthe list to clone
clonethe function to use to clone a list item
Returns
a newly cloned list

◆ anx_list_find()

AnxList* anx_list_find ( AnxList list,
void *  data 
)

Find the first node containing given data in a list.

Parameters
listthe list
datathe data element to find
Returns
the first node containing given data, or NULL if it is not found

◆ anx_list_free()

AnxList* anx_list_free ( AnxList list)

Free a list, using anx_free() to free each data element.

Parameters
listthe list
Returns
NULL on success

◆ anx_list_free_with()

AnxList* anx_list_free_with ( AnxList list,
AnxFreeFunc  free_func 
)

Free a list, using a given function to free each data element.

Parameters
listthe list
free_funca function to free each data element
Returns
NULL on success

◆ anx_list_is_empty()

int anx_list_is_empty ( AnxList list)

Query if a list is empty, ie.

contains no items

Parameters
listthe list
Returns
1 if the list is empty, 0 otherwise

◆ anx_list_is_singleton()

int anx_list_is_singleton ( AnxList list)

Query if the list is singleton, ie.

contains exactly one item

Parameters
listthe list
Returns
1 if the list is singleton, 0 otherwise

◆ anx_list_length()

int anx_list_length ( AnxList list)

Query the number of items in a list.

Parameters
listthe list
Returns
the number of nodes in the list

◆ anx_list_new()

AnxList* anx_list_new ( void  )

Create a new list.

Returns
a new list

◆ anx_list_prepend()

AnxList* anx_list_prepend ( AnxList list,
void *  data 
)

Prepend a new node to a list containing given data.

Parameters
listthe list
datathe data element of the newly created node
Returns
the new list head

◆ anx_list_remove()

AnxList* anx_list_remove ( AnxList list,
AnxList node 
)

Remove a node from a list.

Parameters
listthe list
nodethe node to remove
Returns
the head of the list (which may have changed)

◆ anx_list_tail()

AnxList* anx_list_tail ( AnxList list)

Return the tail element of a list.

Parameters
listthe list
Returns
the tail element