home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume28 / librb / part01 / list.h < prev    next >
Text File  |  1992-02-23  |  1KB  |  36 lines

  1. /* 
  2.  * $Source: /n/fs/vd/jsp/src/rb/RCS/list.h,v $
  3.  * $Revision: 1.1 $
  4.  * $Date: 92/02/12 15:43:13 $
  5.  * $Author: jsp $
  6.  */
  7.  
  8. /* This is the header file for the list manipulation routines in list.c.
  9.  * Any struct can be turned into a list as long as its first two fields are
  10.  * flink and blink. */
  11.  
  12. typedef struct list {
  13.   struct list *flink;
  14.   struct list *blink;
  15. } *List;
  16.  
  17. /* Nil, first, next, and prev are macro expansions for list traversal 
  18.  * primitives. */
  19.  
  20. #define nil(l) (l)
  21. #define first(l) (l->flink)
  22. #define last(l) (l->blink)
  23. #define next(n) (n->flink)
  24. #define prev(n) (n->blink)
  25.  
  26. #define mklist(t) ((t *) make_list (sizeof(t)))
  27.  
  28. /* These are the routines for manipluating lists */
  29.  
  30. /* void insert(node list);     Inserts a node to the end of a list */
  31. /* void delete_item(node);     Deletes an arbitrary node */
  32. /* List make_list(node_size);  Creates a new list */
  33. /* List get_node(list);        Allocates a node to be inserted into the list */
  34. /* void free_node(node, list); Deallocates a node from the list */
  35.  
  36.