2 * written for mutt-ng by:
3 * Rocco Rutte <pdmef@cs.tu-berlin.de>
5 * This file is part of mutt-ng, see http://www.muttng.org/.
6 * It's licensed under the GNU General Public License,
7 * please see the file GPL in the top level source directory.
11 * this aims to provide a generic list
12 * implementation using arrays only
19 #include <sys/types.h>
21 typedef struct list2_t {
30 list2_t* list_new (void);
32 typedef void list_del_t (void**);
34 /* free() all memory used by list and optionally
35 * use del function to free() items as well */
36 void list_del (list2_t**, list_del_t* del);
38 #define list_empty(l) (!l || l->length == 0 || !l->data)
42 * the list_push_* functions create a list if empty so far
45 void list_push_back (list2_t**, void*);
46 void list_push_front (list2_t**, void*);
47 void* list_pop_back (list2_t*);
48 void* list_pop_front (list2_t*);
49 void* list_pop_idx (list2_t*, int);
56 list2_t* list_cpy (list2_t*);
57 /* "hard copy" using callback to copy items */
58 list2_t* list_dup (list2_t*, void* (*dup) (void*));
64 /* looks up item in list using callback function and comparison item
67 * index in data array otherwise
68 * the callback must return 0 on equality
70 typedef int list_lookup_t (const void*, const void*);
71 int list_lookup (list2_t*, list_lookup_t* cmp, const void*);
74 * dumb-splits string at boundary characters into list
76 list2_t* list_from_str (const char* str, const char* delim);
78 #endif /* !_LIB_LIST_H */