00001
00002
00003
00004
00005 #ifndef __LLIST_H
00006 #define __LLIST_H
00007
00008 #include "setup.h"
00009 #include <stddef.h>
00010
00011 typedef void (*curl_llist_dtor)(void *, void *);
00012
00013 struct curl_llist_element {
00014 void *ptr;
00015
00016 struct curl_llist_element *prev;
00017 struct curl_llist_element *next;
00018 };
00019
00020 struct curl_llist {
00021 struct curl_llist_element *head;
00022 struct curl_llist_element *tail;
00023
00024 curl_llist_dtor dtor;
00025
00026 size_t size;
00027 };
00028
00029 void Curl_llist_init(struct curl_llist *, curl_llist_dtor);
00030 struct curl_llist *Curl_llist_alloc(curl_llist_dtor);
00031 int Curl_llist_insert_next(struct curl_llist *, struct curl_llist_element *,
00032 const void *);
00033 int Curl_llist_insert_prev(struct curl_llist *, struct curl_llist_element *,
00034 const void *);
00035 int Curl_llist_remove(struct curl_llist *, struct curl_llist_element *,
00036 void *);
00037 int Curl_llist_remove_next(struct curl_llist *, struct curl_llist_element *,
00038 void *);
00039 size_t Curl_llist_count(struct curl_llist *);
00040 void Curl_llist_destroy(struct curl_llist *, void *);
00041
00042 #endif