src/dllist.h

Go to the documentation of this file.
00001 /*
00002  * Doubly Linked List
00003  */
00004 
00005 /* Doubly Linked List Node */
00006 typedef struct dllist_node_t {
00007     struct dllist_node_t *next, *prev;
00008     void *data;
00009 } dllist_node;
00010 
00011 /* DLLIST - Doesn't store data just
00012  * size of list and has pointer to
00013  * head node and tail node */
00014 typedef struct dllist_t {
00015     struct dllist_node_t *head, *tail;
00016     unsigned int size;
00017 } dllist;
00018 
00019 /* The various create functions */
00020 dllist *dllist_create_list();
00021 dllist_node *dllist_create_node(void *data);
00022 
00023 /* The different destroy functions
00024  * destroy_node returns the data */
00025 int dllist_destroy_list(dllist *ddlist);
00026 void *dllist_destroy_node(dllist_node *node);   /* Shouldn't include this one but whatever */
00027 
00028 /* The various insert functions */
00029 void dllist_insert_after(dllist *dllist, dllist_node *node, dllist_node *newnode);
00030 void dllist_insert_before(dllist *dllist, dllist_node *node, dllist_node *newnode);
00031 void dllist_insert_beginning(dllist *dllist, dllist_node *newnode);
00032 void dllist_insert_end(dllist *dllist, dllist_node *newnode);
00033 
00034 /* Remove nodes and return the data */
00035 void *dllist_remove(dllist *dllist, dllist_node *node);
00036 void *dllist_remove_node_at_pos(dllist *dllist, int pos);
00037 
00038 /* Utility functions */
00039 dllist_node *dllist_head(dllist *dllist);
00040 dllist_node *dllist_tail(dllist *dllist);
00041 dllist_node *dllist_next(dllist_node *node);
00042 dllist_node *dllist_prev(dllist_node *node);
00043 
00044 void *dllist_data(dllist_node *node);
00045 int dllist_size(dllist *dllist);
00046 void *dllist_get_node(dllist *dllist, int pos);

Generated on Mon May 28 04:25:19 2007 for BattletechMUX by  doxygen 1.4.7