1 #ifndef __ARES_LLIST_H
2 #define __ARES_LLIST_H
3 
4 
5 /* Copyright 1998 by the Massachusetts Institute of Technology.
6  *
7  * Permission to use, copy, modify, and distribute this
8  * software and its documentation for any purpose and without
9  * fee is hereby granted, provided that the above copyright
10  * notice appear in all copies and that both that copyright
11  * notice and this permission notice appear in supporting
12  * documentation, and that the name of M.I.T. not be used in
13  * advertising or publicity pertaining to distribution of the
14  * software without specific, written prior permission.
15  * M.I.T. makes no representations about the suitability of
16  * this software for any purpose.  It is provided "as is"
17  * without express or implied warranty.
18  */
19 
20 
21 /* Node definition for circular, doubly-linked list */
22 struct list_node {
23   struct list_node *prev;
24   struct list_node *next;
25   void* data;
26 };
27 
28 void ares__init_list_head(struct list_node* head);
29 
30 void ares__init_list_node(struct list_node* node, void* d);
31 
32 int ares__is_list_empty(struct list_node* head);
33 
34 void ares__insert_in_list(struct list_node* new_node,
35                           struct list_node* old_node);
36 
37 void ares__remove_from_list(struct list_node* node);
38 
39 void ares__swap_lists(struct list_node* head_a,
40                       struct list_node* head_b);
41 
42 #endif /* __ARES_LLIST_H */
43