diff options
Diffstat (limited to 'src/core/list.c')
| -rw-r--r-- | src/core/list.c | 48 |
1 files changed, 17 insertions, 31 deletions
diff --git a/src/core/list.c b/src/core/list.c index 10ec4ef8..97fe5c30 100644 --- a/src/core/list.c +++ b/src/core/list.c @@ -16,19 +16,17 @@ // Using pointer arithmetic, we can operate as a list of "anything". #define NODE(list, item) \ - (nni_list_node *) (void *) (((char *) item) + list->ll_offset) -#define ITEM(list, node) \ - (void *) (((char *) node) - list->ll_offset) + (nni_list_node *) (void *)(((char *) item) + list->ll_offset) +#define ITEM(list, node) (void *) (((char *) node) - list->ll_offset) void nni_list_init_offset(nni_list *list, size_t offset) { - list->ll_offset = offset; + list->ll_offset = offset; list->ll_head.ln_next = &list->ll_head; list->ll_head.ln_prev = &list->ll_head; } - void * nni_list_first(const nni_list *list) { @@ -40,7 +38,6 @@ nni_list_first(const nni_list *list) return (ITEM(list, node)); } - void * nni_list_last(const nni_list *list) { @@ -52,7 +49,6 @@ nni_list_last(const nni_list *list) return (ITEM(list, node)); } - void nni_list_append(nni_list *list, void *item) { @@ -61,13 +57,12 @@ nni_list_append(nni_list *list, void *item) if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { nni_panic("appending node already on a list or not inited"); } - node->ln_prev = list->ll_head.ln_prev; - node->ln_next = &list->ll_head; + node->ln_prev = list->ll_head.ln_prev; + node->ln_next = &list->ll_head; node->ln_next->ln_prev = node; node->ln_prev->ln_next = node; } - void nni_list_prepend(nni_list *list, void *item) { @@ -76,45 +71,42 @@ nni_list_prepend(nni_list *list, void *item) if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { nni_panic("prepending node already on a list or not inited"); } - node->ln_next = list->ll_head.ln_next; - node->ln_prev = &list->ll_head; + node->ln_next = list->ll_head.ln_next; + node->ln_prev = &list->ll_head; node->ln_next->ln_prev = node; node->ln_prev->ln_next = node; } - void nni_list_insert_before(nni_list *list, void *item, void *before) { - nni_list_node *node = NODE(list, item); + nni_list_node *node = NODE(list, item); nni_list_node *where = NODE(list, before); if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { nni_panic("inserting node already on a list or not inited"); } - node->ln_next = where; - node->ln_prev = where->ln_prev; + node->ln_next = where; + node->ln_prev = where->ln_prev; node->ln_next->ln_prev = node; node->ln_prev->ln_next = node; } - void nni_list_insert_after(nni_list *list, void *item, void *after) { - nni_list_node *node = NODE(list, item); + nni_list_node *node = NODE(list, item); nni_list_node *where = NODE(list, after); if ((node->ln_next != NULL) || (node->ln_prev != NULL)) { nni_panic("inserting node already on a list or not inited"); } - node->ln_prev = where; - node->ln_next = where->ln_next; + node->ln_prev = where; + node->ln_next = where->ln_next; node->ln_next->ln_prev = node; node->ln_prev->ln_next = node; } - void * nni_list_next(const nni_list *list, void *item) { @@ -126,7 +118,6 @@ nni_list_next(const nni_list *list, void *item) return (ITEM(list, node)); } - void * nni_list_prev(const nni_list *list, void *item) { @@ -138,7 +129,6 @@ nni_list_prev(const nni_list *list, void *item) return (ITEM(list, node)); } - void nni_list_remove(nni_list *list, void *item) { @@ -146,11 +136,10 @@ nni_list_remove(nni_list *list, void *item) node->ln_prev->ln_next = node->ln_next; node->ln_next->ln_prev = node->ln_prev; - node->ln_next = NULL; - node->ln_prev = NULL; + node->ln_next = NULL; + node->ln_prev = NULL; } - int nni_list_active(nni_list *list, void *item) { @@ -159,28 +148,25 @@ nni_list_active(nni_list *list, void *item) return (node->ln_next == NULL ? 0 : 1); } - int nni_list_empty(nni_list *list) { return (list->ll_head.ln_next == &list->ll_head); } - int nni_list_node_active(nni_list_node *node) { return (node->ln_next == NULL ? 0 : 1); } - void nni_list_node_remove(nni_list_node *node) { if (node->ln_next != NULL) { node->ln_prev->ln_next = node->ln_next; node->ln_next->ln_prev = node->ln_prev; - node->ln_next = NULL; - node->ln_prev = NULL; + node->ln_next = NULL; + node->ln_prev = NULL; } } |
