/* list.h - List Management Header File
* Copyright 1988-90 by Cnapse
* Written by: M. de Champlain
*/
typedef struct link
{
struct link *previous;
struct link *next;
} LINK;
extern void *List_Allocate(word theNumberOfNodes, word theNodeSize);
extern void List_Free(void *theList);
extern void *List_RemoveHead(void *fromTheList);
extern void *List_RemoveTail(void *fromTheList);
extern void *List_Remove(void *theNode);
extern void List_InsertHead(void *theNode, void *toTheList);
extern void List_InsertTail(void *theNode, void *toTheList);
extern void List_InsertAfter(void *theNode, void *afterThisNode);
extern void List_InsertBefore(void *theNode, void *beforeThisNode);
#define List_IsEmpty(theList) ((bool) \
( ((LINK *)theList) == \
((LINK *)theList)->next ))