1 /* $Id: H:/drh/idioms/book/RCS/ring.doc,v 1.12 1997/02/21 19:49:24 drh Exp $ */
2 #ifndef RING_INCLUDED
3 #define RING_INCLUDED
4 #define T Ring_T
5 typedef struct T *T;
6 extern T Ring_new (void);
7 extern T Ring_ring(void *x, ...);
8 extern void Ring_free  (T *ring);
9 extern int  Ring_length(T  ring);
10 extern void *Ring_get(T ring, int i);
11 extern void *Ring_put(T ring, int i, void *x);
12 extern void *Ring_add(T ring, int pos, void *x);
13 extern void *Ring_addlo(T ring, void *x);
14 extern void *Ring_addhi(T ring, void *x);
15 extern void *Ring_remove(T ring, int i);
16 extern void *Ring_remlo(T ring);
17 extern void *Ring_remhi(T ring);
18 extern void Ring_rotate(T ring, int n);
19 #undef T
20 #endif
21