typedef struct list2_t {
void** data;
- size_t length;
+ ssize_t length;
} list2_t;
/*
*/
list2_t* list_new (void);
-/* frees all memory used by list and optionally used edel func
- * ptr to free items */
-void list_del (list2_t**, void (*edel) (void**));
+
+typedef void list_del_t (void**);
+
+/* free() all memory used by list and optionally
+ * use del function to free() items as well */
+void list_del (list2_t**, list_del_t* del);
#define list_empty(l) (!l || l->length == 0 || !l->data)
* index in data array otherwise
* the callback must return 0 on equality
*/
-int list_lookup (list2_t*, int (*cmp) (const void*, const void*), const void*);
+typedef int list_lookup_t (const void*, const void*);
+int list_lookup (list2_t*, list_lookup_t* cmp, const void*);
+
+/*
+ * dumb-splits string at boundary characters into list
+ */
+list2_t* list_from_str (const char* str, const char* delim);
#endif /* !_LIB_LIST_H */