+++ /dev/null
-/* $Id: list.c 6168 2003-01-21 06:27:32Z alexk $
-**
-*/
-
-#include "config.h"
-#include "clibrary.h"
-
-#include "inn/list.h"
-
-void
-list_new(struct list *list)
-{
- list->head = (struct node *)&list->tail;
- list->tailpred = (struct node *)&list->head;
- list->tail = NULL;
-}
-
-struct node *
-list_addhead(struct list *list, struct node *node)
-{
- node->succ = list->head;
- node->pred = (struct node *)&list->head;
- list->head->pred = node;
- list->head = node;
- return node;
-}
-
-struct node *
-list_addtail(struct list *list, struct node *node)
-{
- node->succ = (struct node *)&list->tail;
- node->pred = list->tailpred;
- list->tailpred->succ = node;
- list->tailpred = node;
- return node;
-}
-
-struct node *
-list_remhead(struct list *list)
-{
- struct node *node;
-
- node = list->head->succ;
- if (node) {
- node->pred = (struct node *)&list->head;
- node = list->head;
- list->head = node->succ;
- }
- return node;
-}
-
-struct node *
-list_head(struct list *list)
-{
- if (list->head->succ)
- return list->head;
- return NULL;
-}
-
-struct node *
-list_tail(struct list *list)
-{
- if (list->tailpred->pred)
- return list->tailpred;
- return NULL;
-}
-
-struct node *
-list_succ(struct node *node)
-{
- if (node->succ->succ)
- return node->succ;
- return NULL;
-}
-
-struct node *
-list_pred(struct node *node)
-{
- if (node->pred->pred)
- return node->pred;
- return NULL;
-}
-
-struct node *
-list_remove(struct node *node)
-{
- node->pred->succ = node->succ;
- node->succ->pred = node->pred;
- return node;
-}
-
-struct node *
-list_remtail(struct list *list)
-{
- struct node *node;
-
- node = list_tail(list);
- if (node)
- list_remove(node);
- return node;
-}
-
-bool
-list_isempty(struct list *list)
-{
- return list->tailpred == (struct node *)list;
-}
-
-struct node *
-list_insert(struct list *list, struct node *node, struct node *pred)
-{
- if (pred) {
- if (pred->succ) {
- node->succ = pred->succ;
- node->pred = pred;
- pred->succ->pred = node;
- pred->succ = node;
- } else {
- list_addtail(list, node);
- }
- } else {
- list_addhead(list, node);
- }
- return node;
-}