wickedmud/doc/
wickedmud/help/
wickedmud/players/
/* file: list.h
 *
 * Headerfile for a basic double-linked list
 */

#ifndef _LIST_HEADER
#define _LIST_HEADER

typedef struct Cell
{
  struct Cell  *_pNextCell;
  struct Cell  *_pPrevCell;
  void         *_pContent;
  int           _valid;
} CELL;

typedef struct List
{
  CELL  *_pFirstCell;
  CELL  *_pLastCell;
  int    _iterators;
  int    _size;
  int    _valid;
} LIST;

typedef struct Iterator
{
  LIST  *_pList;
  CELL  *_pCell;
} ITERATOR;

LIST *AllocList          ( void );
void  AttachIterator     ( ITERATOR *pIter, LIST *pList);
void *NextInList         ( ITERATOR *pIter );
void  AttachToList       ( void *pContent, LIST *pList );
void  DetachFromList     ( void *pContent, LIST *pList );
void  DetachIterator     ( ITERATOR *pIter );
void  FreeList           ( LIST *pList );
int   SizeOfList         ( LIST *pList );

#endif