1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Authors: Jeffrey Stedfast <fejj@ximian.com>
5 * Copyright 2003 Ximian, Inc. (www.ximian.com)
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
32 list_init (List
*list
)
34 list
->head
= (ListNode
*) &list
->tail
;
36 list
->tailpred
= (ListNode
*) &list
->head
;
41 list_is_empty (List
*list
)
43 return list
->head
== (ListNode
*) &list
->tail
;
48 list_length (List
*list
)
64 list_unlink_head (List
*list
)
81 list_unlink_tail (List
*list
)
98 list_prepend_node (List
*list
, ListNode
*node
)
100 node
->next
= list
->head
;
101 node
->prev
= (ListNode
*) &list
->head
;
102 list
->head
->prev
= node
;
110 list_append_node (List
*list
, ListNode
*node
)
112 node
->next
= (ListNode
*) &list
->tail
;
113 node
->prev
= list
->tailpred
;
114 list
->tailpred
->next
= node
;
115 list
->tailpred
= node
;
122 list_node_unlink (ListNode
*node
)
124 node
->next
->prev
= node
->prev
;
125 node
->prev
->next
= node
->next
;