Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

linked_list.h

Go to the documentation of this file.
00001 #ifndef __LINKED_LIST_H
00002 #define __LINKED_LIST_H
00003 
00004 
00016 #include <stdlib.h>
00017 #include <stdio.h>
00018 #include <unistd.h>
00019 #include <pthread.h>
00020 
00021 
00027 struct node{
00028    void *data;
00029    struct node *prev;
00030    struct node *next;
00031 };
00032 typedef struct node node_t;
00033 
00034 
00035 struct linked_list{
00036    size_t elements;
00037    size_t max_elements;
00038    node_t *head_of_list;
00039    pthread_mutex_t list_mutex;
00040 };
00041 typedef struct linked_list linked_list_t;
00042 
00043 
00044 int linked_list_init(linked_list_t **new_linked_list,
00045                                 size_t max_elements);
00046 
00047 int linked_list_destroy(linked_list_t *list_to_destroy);
00048 
00049 int linked_list_insert(linked_list_t *new_linked_list,
00050                        int (generic_search_w_key)(),
00051                        void *search_key,
00052                        void *data_to_add);
00053                        
00054 void *linked_list_remove(linked_list_t *new_linked_list,
00055                                   int (generic_search_w_key)(),
00056                                   void *search_key);
00057 
00058 void *linked_list_search(linked_list_t *new_linked_list,
00059            int (generic_search_w_key)(),
00060            void *search_key);
00061 
00062 void *linked_list_rand_search(linked_list_t *new_linked_list,
00063                                     int (generic_search_wo_key)());
00064 
00065 
00066 
00067 int linked_list_process_node(linked_list_t *new_linked_list, 
00068                              int (generic_search_w_key)(),
00069                              void *search_key,
00070                              int (generic_processing)(),
00071                              void *args);
00072 
00073 int linked_list_process_all(linked_list_t *new_linked_list,
00074                                               int (generic_process)(), void *args);
00075                                     
00076 
00077 void *linked_list_compare_all(linked_list_t *new_linked_list,
00078                                         int (generic_compare_nodes)(),
00079                                         void *args);
00080 
00084 #endif

Generated on Thu Dec 16 23:07:31 2004 for alsad by doxygen 1.3.6