/* Do not remove the headers from this file! see /USAGE for more info. */ // Quick system for efficiently managing queues of last X items class lqueue { int size; int index; array elems; } class lqueue lqueue_new(int size) { class lqueue q = new(class lqueue); q->size = size; q->elems = allocate(size); q->index = 0; return q; } void lqueue_add(class lqueue q, mixed elem) { q->elems[q->index++] = elem; if (q->index == q->size) q->index = 0; } // 1 = last, 2 = before that, etc void lqueue_member(class lqueue q, int ind) { int which = q->index - ind; if (which < 0) which += q->size; return q->elems[which]; } array lqueue_list(class lqueue q) { return q->elems[q->index..] + q->elems[0..q->index-1]; }