#include <stdlib.h>Go to the source code of this file.
Data Structures | |
| struct | list_elem_s |
| struct | list_t |
Defines | |
| #define | LIST_APPEND(prList, data) ListInsertNext((prList), LIST_TAIL(prList), (data)) |
| #define | LIST_PREPEND(prList, data) ListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data)) |
| #define | LIST_SIZE(prList) ((prList)->size) |
| #define | CLUSTALO_LIST_HEAD(prList) ((prList)->head) |
| #define | LIST_TAIL(prList) ((prList)->tail) |
| #define | LIST_IS_HEAD(prList, prElement) ((prElement) == (prList)->head ? 1 : 0) |
| #define | LIST_IS_TAIL(prElement) ((prElement)->next == NULL ? 1 : 0) |
| #define | LIST_DATA(prElement) ((prElement)->data) |
| #define | LIST_NEXT(prElement) ((prElement)->next) |
| #define | INT_LIST_INIT(prList) ListInit((prList), free) |
| #define | INT_LIST_DESTROY(prList) ListDestroy((prList)); |
| #define | INT_LIST_APPEND(prList, data) IntListInsertNext((prList), LIST_TAIL(prList), (data)) |
| #define | INT_LIST_PREPEND(prList, data) IntListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data)) |
| #define | INT_LIST_SIZE(prList) LIST_SIZE(prList) |
| #define | INT_CLUSTALO_LIST_HEAD(prList) CLUSTALO_LIST_HEAD_INT((prList)) |
| #define | INT_LIST_TAIL(prList) LIST_TAIL_INT((prList) ) |
| #define | INT_LIST_IS_HEAD(prList, prElement) LIST_IS_HEAD(prList, prElement) |
| #define | INT_LIST_IS_TAIL(prElement) LIST_IS_TAIL((prElement)) |
| #define | INT_LIST_DATA(prElement) LIST_DATA((prElement)) |
| #define | INT_LIST_NEXT(prElement) 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. | |
| #define CLUSTALO_LIST_HEAD | ( | prList | ) | ((prList)->head) |
| #define INT_CLUSTALO_LIST_HEAD | ( | prList | ) | CLUSTALO_LIST_HEAD_INT((prList)) |
| #define INT_LIST_APPEND | ( | prList, | |||
| data | ) | IntListInsertNext((prList), LIST_TAIL(prList), (data)) |
| #define INT_LIST_DATA | ( | prElement | ) | LIST_DATA((prElement)) |
| #define INT_LIST_DESTROY | ( | prList | ) | ListDestroy((prList)); |
| #define INT_LIST_INIT | ( | prList | ) | ListInit((prList), free) |
| #define INT_LIST_IS_HEAD | ( | prList, | |||
| prElement | ) | LIST_IS_HEAD(prList, prElement) |
| #define INT_LIST_IS_TAIL | ( | prElement | ) | LIST_IS_TAIL((prElement)) |
| #define INT_LIST_NEXT | ( | prElement | ) | LIST_NEXT((prElement)) |
| #define INT_LIST_PREPEND | ( | prList, | |||
| data | ) | IntListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data)) |
| #define INT_LIST_SIZE | ( | prList | ) | LIST_SIZE(prList) |
| #define INT_LIST_TAIL | ( | prList | ) | LIST_TAIL_INT((prList) ) |
| #define LIST_APPEND | ( | prList, | |||
| data | ) | ListInsertNext((prList), LIST_TAIL(prList), (data)) |
| #define LIST_DATA | ( | prElement | ) | ((prElement)->data) |
| #define LIST_IS_HEAD | ( | prList, | |||
| prElement | ) | ((prElement) == (prList)->head ? 1 : 0) |
| #define LIST_IS_TAIL | ( | prElement | ) | ((prElement)->next == NULL ? 1 : 0) |
| #define LIST_NEXT | ( | prElement | ) | ((prElement)->next) |
| #define LIST_PREPEND | ( | prList, | |||
| data | ) | ListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data)) |
| #define LIST_SIZE | ( | prList | ) | ((prList)->size) |
| #define LIST_TAIL | ( | prList | ) | ((prList)->tail) |
| typedef list_t int_list_t |
| typedef struct list_elem_s list_elem_t |
| int IntListInsertNext | ( | list_t * | prList, | |
| list_elem_t * | prElement, | |||
| const int | data | |||
| ) |
Insert int next to given element.
| [in] | prList | List into which to insert |
| [in] | prElement | Current position/element. Element after which to insert. If NULL head is used. |
| [in] | data | int to store |
| int IntListRemoveNext | ( | list_t * | prList, | |
| list_elem_t * | prElement, | |||
| int * | iData_p | |||
| ) |
Remove next element from current element/position.
| [in] | prList | List from which an element is to be removed. |
| [in] | prElement | Current element/position. Next item will be removed. If NULL head is used. |
| [out] | iData_p | Will be pointed to removed elements data. |
| 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.
| [in] | prList | The list to destroy |
| void ListInit | ( | list_t * | prList, | |
| void(*)(void *data) | destroy | |||
| ) |
Initialise data members of a list.
| [in] | prList | List to initialise |
| [in] | destroy | A 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... |
| int ListInsertNext | ( | list_t * | prList, | |
| list_elem_t * | prElement, | |||
| const void * | pvData | |||
| ) |
Insert data next to given element.
| [in] | prList | List into which to insert |
| [in] | prElement | Current position/element. Element after which to insert. If NULL head is used. |
| [in] | pvData | Pointer to data to store |
| int ListRemoveNext | ( | list_t * | prList, | |
| list_elem_t * | prElement, | |||
| void ** | pvData_p | |||
| ) |
Remove next element from current element/position.
| [in] | prList | List from which an element is to be removed. |
| [in] | prElement | Current element/position. Next item will be removed. If NULL head is used. |
| [out] | pvData_p | Will be pointed to removed elements data. |
1.6.3