annotate lib/llist.c @ 15:2a56fdc40035

Linked list functions, forgot to add this to the repository.
author Rob Landley <rob@landley.net>
date Wed, 01 Nov 2006 22:28:46 -0500
parents
children 3981c96f9285
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* vi: set sw=4 ts=4 :
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 * llist.c - Linked list functions
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 *
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 * Linked list structures have a next pointer as their first element.
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 */
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
6
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 #include "toys.h"
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
8
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 // Free all the elements of a linked list
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 // if freeit!=NULL call freeit() on each element before freeing it.
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
11
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 void llist_free(void *list, void (*freeit)(void *data))
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 {
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 while (list) {
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
15 void **next = (void **)list;
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 void *list_next = *next;
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 if (freeit) freeit(list);
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
18 free(list);
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 list = list_next;
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 }
2a56fdc40035 Linked list functions, forgot to add this to the repository.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 }