#ifndef UTIL_H #define UTIL_H template class buffer { int end, size; T buf[BUFFERSIZE]; public: inline buffer() : end(0), size(0) { } inline void add(T& el) { buf[end]=el; if (++end == BUFFERSIZE) end=0; if (size++ == BUFFERSIZE) size--; } inline T& operator[] (int index) { //ls_error("Element %d\n", (end - size + index + BUFFERSIZE) % BUFFERSIZE); return buf[(end - size + index + BUFFERSIZE) % BUFFERSIZE]; } inline int getSize() { return size; } }; #endif