X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fringbuffer.h;fp=source%2Fringbuffer.h;h=c118019dd86e2905caf52a6b934cd2740d4ba765;hb=398c5e3e6e03080b6b057fd56858ab04694969ed;hp=0000000000000000000000000000000000000000;hpb=d44d45bee2c3b6b5a8822ecdc23528dcf039ee2a;p=netvis.git diff --git a/source/ringbuffer.h b/source/ringbuffer.h new file mode 100644 index 0000000..c118019 --- /dev/null +++ b/source/ringbuffer.h @@ -0,0 +1,28 @@ +/* $Id$ + +This file is part of NetVis +Copyright @ 2008 Mikko Rasa, Mikkosoft Productions +Distributed unter the GPL +*/ + +#ifndef RINGBUFFER_H_ +#define RINGBUFFER_H_ + +#include + +template +class RingBuffer +{ +private: + unsigned sz; + std::vector data; + unsigned pos; + +public: + RingBuffer(unsigned s): sz(s), data(sz), pos(0) { } + void push(const T &v) { data[pos=(pos+1)%sz] = v; } + const T &get(unsigned i) const { return data[(pos+sz-i)%sz]; } + unsigned size() const { return sz; } +}; + +#endif