25 #ifndef __jack_jslist_h__    26 #define __jack_jslist_h__    29 #include <jack/systemdeps.h>    37 typedef int     (*JCompareFunc) (
void* a, 
void* b);
    46 jack_slist_alloc (
void)
    52         new_list->data = NULL;
    53         new_list->next = NULL;
    61 jack_slist_prepend (
JSList* list, 
void* data)
    67         new_list->data = data;
    68         new_list->next = list;
    74 #define jack_slist_next(slist)  ((slist) ? (((JSList *)(slist))->next) : NULL)    77 jack_slist_last (
JSList *list)
    89 jack_slist_remove_link (
JSList *list,
   101                 prev->next = tmp->next;
   118 jack_slist_free (
JSList *list)
   121         JSList *next = list->next;
   129 jack_slist_free_1 (
JSList *list)
   138 jack_slist_remove (
JSList *list,
   148         if (tmp->data == data) {
   150                 prev->next = tmp->next;
   155             jack_slist_free (tmp);
   169 jack_slist_length (
JSList *list)
   184 jack_slist_find (
JSList *list,
   188         if (list->data == data)
   198 jack_slist_copy (
JSList *list)
   205         new_list = jack_slist_alloc ();
   206         new_list->data = list->data;
   210             last->next = jack_slist_alloc ();
   212             last->data = list->data;
   222 jack_slist_append (
JSList *list,
   228     new_list = jack_slist_alloc ();
   229     new_list->data = data;
   232         last = jack_slist_last (list);
   233         last->next = new_list;
   242 jack_slist_sort_merge (
JSList *l1,
   244                        JCompareFunc compare_func)
   251         if (compare_func(l1->data, l2->data) < 0) {
   259     l->next = l1 ? l1 : l2;
   266 jack_slist_sort (
JSList *list,
   267                  JCompareFunc compare_func)
   279     while ((l2 = l2->next) != NULL) {
   280         if ((l2 = l2->next) == NULL)
   287     return jack_slist_sort_merge (jack_slist_sort (list, compare_func),
   288                                   jack_slist_sort (l2, compare_func),