SerialLibrary for arrc

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Buffer52.hpp Source File

Buffer52.hpp

00001 #ifndef _52BUFFER
00002 #define _52BUFFER
00003 
00004 #include <vector>
00005 
00006 namespace ARRC{
00007 template <class type> class Buffer{
00008 public:
00009     Buffer(unsigned size):buf(size,0),size(size),read_ref(0),write_ref(0){}
00010     type read(){
00011         type ret = 0;
00012         if(read_ref < write_ref){
00013             ret = buf[read_ref % size];
00014             read_ref++;
00015         }
00016         return ret;
00017     }
00018     void write(type elem){
00019         buf[write_ref % size] = elem;
00020         write_ref++;
00021     }
00022     bool readable(){return (read_ref < write_ref);}
00023     int datacount(){return write_ref - read_ref;}
00024 private:
00025 std::vector<type> buf;
00026 long unsigned read_ref,write_ref;
00027 long unsigned size;
00028 };
00029 
00030 }
00031 
00032 #endif