Clustal Omega 1.2.4
list.h File Reference
#include <stdlib.h>
Include dependency graph for list.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  list_elem_s
 
struct  list_t
 

Macros

#define LIST_APPEND(prList, data)
 
#define LIST_PREPEND(prList, data)
 
#define LIST_SIZE(prList)
 
#define CLUSTALO_LIST_HEAD(prList)
 
#define LIST_TAIL(prList)
 
#define LIST_IS_HEAD(prList, prElement)
 
#define LIST_IS_TAIL(prElement)
 
#define LIST_DATA(prElement)
 
#define LIST_NEXT(prElement)
 
#define INT_LIST_INIT(prList)
 
#define INT_LIST_DESTROY(prList)
 
#define INT_LIST_APPEND(prList, data)
 
#define INT_LIST_PREPEND(prList, data)
 
#define INT_LIST_SIZE(prList)
 
#define INT_CLUSTALO_LIST_HEAD(prList)
 
#define INT_LIST_TAIL(prList)
 
#define INT_LIST_IS_HEAD(prList, prElement)
 
#define INT_LIST_IS_TAIL(prElement)
 
#define INT_LIST_DATA(prElement)
 
#define INT_LIST_NEXT(prElement)
 

Typedefs

typedef struct list_elem_s list_elem_t
 
typedef list_t int_list_t
 

Functions

void ListInit (list_t *prList, void(*destroy)(void *data))
 Initialise data members of a list.
 
void ListDestroy (list_t *prList)
 Calls user defined function to free data in list and resets the list to NULL. Call even if your destroy function is NULL.
 
int ListInsertNext (list_t *prList, list_elem_t *prElement, const void *data)
 Insert data next to given element.
 
int ListRemoveNext (list_t *prList, list_elem_t *prElement, void **data)
 Remove next element from current element/position.
 
int IntListInsertNext (list_t *prList, list_elem_t *prElement, const int data)
 Insert int next to given element.
 
int IntListRemoveNext (list_t *prList, list_elem_t *prElement, int *data)
 Remove next element from current element/position.
 

Macro Definition Documentation

◆ CLUSTALO_LIST_HEAD

#define CLUSTALO_LIST_HEAD ( prList)
Value:
((prList)->head)

◆ INT_CLUSTALO_LIST_HEAD

#define INT_CLUSTALO_LIST_HEAD ( prList)
Value:
CLUSTALO_LIST_HEAD_INT((prList))

◆ INT_LIST_APPEND

#define INT_LIST_APPEND ( prList,
data )
Value:
IntListInsertNext((prList), LIST_TAIL(prList), (data))
int IntListInsertNext(list_t *prList, list_elem_t *prElement, const int data)
Insert int next to given element.
Definition list.c:211
#define LIST_TAIL(prList)
Definition list.h:57

◆ INT_LIST_DATA

#define INT_LIST_DATA ( prElement)
Value:
LIST_DATA((prElement))
#define LIST_DATA(prElement)
Definition list.h:63

◆ INT_LIST_DESTROY

#define INT_LIST_DESTROY ( prList)
Value:
ListDestroy((prList));
void ListDestroy(list_t *prList)
Calls user defined function to free data in list and resets the list to NULL. Call even if your destr...
Definition list.c:78

◆ INT_LIST_INIT

#define INT_LIST_INIT ( prList)
Value:
ListInit((prList), free)
void ListInit(list_t *prList, void(*destroy)(void *data))
Initialise data members of a list.
Definition list.c:57

◆ INT_LIST_IS_HEAD

#define INT_LIST_IS_HEAD ( prList,
prElement )
Value:
LIST_IS_HEAD(prList, prElement)
#define LIST_IS_HEAD(prList, prElement)
Definition list.h:59

◆ INT_LIST_IS_TAIL

#define INT_LIST_IS_TAIL ( prElement)
Value:
LIST_IS_TAIL((prElement))
#define LIST_IS_TAIL(prElement)
Definition list.h:61

◆ INT_LIST_NEXT

#define INT_LIST_NEXT ( prElement)
Value:
LIST_NEXT((prElement))
#define LIST_NEXT(prElement)
Definition list.h:65

◆ INT_LIST_PREPEND

#define INT_LIST_PREPEND ( prList,
data )
Value:
IntListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data))
#define CLUSTALO_LIST_HEAD(prList)
Definition list.h:55

◆ INT_LIST_SIZE

#define INT_LIST_SIZE ( prList)
Value:
LIST_SIZE(prList)
#define LIST_SIZE(prList)
Definition list.h:53

◆ INT_LIST_TAIL

#define INT_LIST_TAIL ( prList)
Value:
LIST_TAIL_INT((prList) )

◆ LIST_APPEND

#define LIST_APPEND ( prList,
data )
Value:
ListInsertNext((prList), LIST_TAIL(prList), (data))
int ListInsertNext(list_t *prList, list_elem_t *prElement, const void *data)
Insert data next to given element.
Definition list.c:112

◆ LIST_DATA

#define LIST_DATA ( prElement)
Value:
((prElement)->data)

◆ LIST_IS_HEAD

#define LIST_IS_HEAD ( prList,
prElement )
Value:
((prElement) == (prList)->head ? 1 : 0)

◆ LIST_IS_TAIL

#define LIST_IS_TAIL ( prElement)
Value:
((prElement)->next == NULL ? 1 : 0)

◆ LIST_NEXT

#define LIST_NEXT ( prElement)
Value:
((prElement)->next)

◆ LIST_PREPEND

#define LIST_PREPEND ( prList,
data )
Value:
ListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data))

◆ LIST_SIZE

#define LIST_SIZE ( prList)
Value:
((prList)->size)

◆ LIST_TAIL

#define LIST_TAIL ( prList)
Value:
((prList)->tail)

Typedef Documentation

◆ int_list_t

typedef list_t int_list_t

◆ list_elem_t

typedef struct list_elem_s list_elem_t

Function Documentation

◆ IntListInsertNext()

int IntListInsertNext ( list_t * prList,
list_elem_t * prElement,
const int data )

Insert int next to given element.

Parameters
[in]prListList into which to insert
[in]prElementCurrent position/element. Element after which to insert. If NULL head is used.
[in]dataint to store
Returns
Non-zero on failure

◆ IntListRemoveNext()

int IntListRemoveNext ( list_t * prList,
list_elem_t * prElement,
int * iData_p )

Remove next element from current element/position.

Parameters
[in]prListList from which an element is to be removed.
[in]prElementCurrent element/position. Next item will be removed. If NULL head is used.
[out]iData_pWill be pointed to removed elements data.
Returns
Non-zero on failure

◆ ListDestroy()

void ListDestroy ( list_t * prList)

Calls user defined function to free data in list and resets the list to NULL. Call even if your destroy function is NULL.

Parameters
[in]prListThe list to destroy

◆ ListInit()

void ListInit ( list_t * prList,
void(* destroy )(void *data) )

Initialise data members of a list.

Parameters
[in]prListList to initialise
[in]destroyA function to be called with pointer to data when destroying the list. NULL if in doubt, free in most other cases. Note: doxygen will always fail to parse this...

◆ ListInsertNext()

int ListInsertNext ( list_t * prList,
list_elem_t * prElement,
const void * pvData )

Insert data next to given element.

Parameters
[in]prListList into which to insert
[in]prElementCurrent position/element. Element after which to insert. If NULL head is used.
[in]pvDataPointer to data to store
Returns
Non-zero on failure

◆ ListRemoveNext()

int ListRemoveNext ( list_t * prList,
list_elem_t * prElement,
void ** pvData_p )

Remove next element from current element/position.

Parameters
[in]prListList from which an element is to be removed.
[in]prElementCurrent element/position. Next item will be removed. If NULL head is used.
[out]pvData_pWill be pointed to removed elements data.
Returns
Non-zero on failure