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