1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2000-2012 Jeffrey Stedfast
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License
7 * as published by the Free Software Foundation; either version 2.1
8 * of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free
17 * Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
29 list_init (List *list)
31 list->head = (ListNode *) &list->tail;
33 list->tailpred = (ListNode *) &list->head;
37 list_is_empty (List *list)
39 return list->head == (ListNode *) &list->tail;
43 list_length (List *list)
58 list_unlink_head (List *list)
74 list_unlink_tail (List *list)
90 list_prepend (List *list, ListNode *node)
92 node->next = list->head;
93 node->prev = (ListNode *) &list->head;
94 list->head->prev = node;
101 list_append (List *list, ListNode *node)
103 node->next = (ListNode *) &list->tail;
104 node->prev = list->tailpred;
105 list->tailpred->next = node;
106 list->tailpred = node;
112 list_unlink (ListNode *node)
114 node->next->prev = node->prev;
115 node->prev->next = node->next;