home *** CD-ROM | disk | FTP | other *** search
- /* > H.Ring - Ring data type header file */
-
- #ifndef __ring_h
-
- #define __ring_h
-
- struct ring
- {
- void *top; /* pointer to top of ring */
- void *mark; /* pointer to marked item */
- int obj_size; /* size of one element */
- };
-
- typedef struct ring *ring;
-
- #define Forward 1
- #define Backward 0
-
- /* General component routines */
-
- ring ring_new (int obj_len);
- void ring_free (ring r);
- void ring_clear (ring r);
- int ring_copy (ring r1, const ring r2);
- int ring_equal (const ring r1, const ring r2);
- int ring_empty (const ring r);
- int ring_size (const ring r);
-
- /* Iterator */
-
- #define STATUS_CONTINUE 0 /* Continue processing */
- #define STATUS_STOP 1 /* Stop processing */
- #define STATUS_ERROR (-1) /* Error - terminate */
-
- int ring_iterate (const ring r, int (*process)(void *, int));
-
- /* Ring-specific routines */
-
- int ring_insert (ring r, const void *object);
- int ring_pop (ring r);
- int ring_rotate (ring r, int dir, int n);
- void *ring_top (const ring r);
- void ring_mark (ring r);
- void ring_tomark (ring r);
- int ring_atmark (const ring r);
-
- #endif
-