home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / new / misc / sci / splines / dlist.h < prev    next >
C/C++ Source or Header  |  1994-09-13  |  1KB  |  45 lines

  1. /* The routines in this file are copyright (c) 1987 by Helene (Lee) Taran.
  2.  * Permission is granted for use and free distribution as long as the
  3.  * original author's name is included with the code.
  4.  */
  5.  
  6. /*
  7.  *   This file defines a general purpose doubly-linked circluar list.
  8.  */
  9. #ifndef DLIST_H
  10. #define DLIST_H
  11.  
  12. #include <stdio.h>
  13.  
  14. typedef struct dlist {
  15.    void *contents;
  16.    struct dlist *next;
  17.    struct dlist *prev;
  18. } DLIST_ELEMENT;
  19.  
  20. typedef DLIST_ELEMENT *DLISTPTR;    /*GMD*/
  21.  
  22. /* The first element in the list is a dummy record that
  23.  * contains the current length of the list
  24.  */
  25.  
  26. #ifndef TRUE
  27. #define TRUE 1
  28. #endif
  29.  
  30. #ifndef FALSE
  31. #define FALSE 0
  32. #endif
  33.  
  34. #define FIRST(list) ((list)->next)
  35. #define LAST(list) ((list)->prev)
  36. #define NEXT(element) ((element)->next)
  37. #define PREVIOUS(element) ((element)->prev)
  38. #define LENGTH(list) (*(int *)((list)->contents))
  39. #define ISEMPTY(list) (LENGTH(list) == 0)
  40. #define INSERT_FIRST(element,list) Insert_Before(FIRST(list),element,list)
  41. #define INSERT_LAST(element,list)  Insert_After(LAST(list),element,list)
  42. #define MOVE_FIRST(x,y)  INSERT_FIRST( Remove_Element( FIRST((x)),(x)), (y))
  43. #define MOVE_LAST(x,y)   INSERT_LAST( Remove_Element(  LAST((x)),(x)), (y))
  44. #endif
  45.