home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixtools / util / h / ring < prev    next >
Text File  |  1992-07-21  |  1KB  |  48 lines

  1. /*      > H.Ring - Ring data type header file */
  2.  
  3. #ifndef __ring_h
  4.  
  5. #define __ring_h
  6.  
  7. struct ring
  8. {
  9.         void *top;      /* pointer to top of ring */
  10.         void *mark;     /* pointer to marked item */
  11.         int obj_size;   /* size of one element */
  12. };
  13.  
  14. typedef struct ring *ring;
  15.  
  16. #define Forward  1
  17. #define Backward 0
  18.  
  19. /* General component routines */
  20.  
  21. ring ring_new (int obj_len);
  22. void ring_free (ring r);
  23. void ring_clear (ring r);
  24. int ring_copy (ring r1, const ring r2);
  25. int ring_equal (const ring r1, const ring r2);
  26. int ring_empty (const ring r);
  27. int ring_size (const ring r);
  28.  
  29. /* Iterator */
  30.  
  31. #define STATUS_CONTINUE 0       /* Continue processing */
  32. #define STATUS_STOP     1       /* Stop processing */
  33. #define STATUS_ERROR    (-1)    /* Error - terminate */
  34.  
  35. int ring_iterate (const ring r, int (*process)(void *, int));
  36.  
  37. /* Ring-specific routines */
  38.  
  39. int ring_insert (ring r, const void *object);
  40. int ring_pop (ring r);
  41. int ring_rotate (ring r, int dir, int n);
  42. void *ring_top (const ring r);
  43. void ring_mark (ring r);
  44. void ring_tomark (ring r);
  45. int ring_atmark (const ring r);
  46.  
  47. #endif
  48.