SerialLibrary for arrc

Buffer52.hpp

Committer:
hamohamo
Date:
2021-12-11
Revision:
0:4801795a9073

File content as of revision 0:4801795a9073:

#ifndef _52BUFFER
#define _52BUFFER

#include <vector>

namespace ARRC{
template <class type> class Buffer{
public:
    Buffer(unsigned size):buf(size,0),size(size),read_ref(0),write_ref(0){}
    type read(){
        type ret = 0;
        if(read_ref < write_ref){
            ret = buf[read_ref % size];
            read_ref++;
        }
        return ret;
    }
    void write(type elem){
        buf[write_ref % size] = elem;
        write_ref++;
    }
    bool readable(){return (read_ref < write_ref);}
    int datacount(){return write_ref - read_ref;}
private:
std::vector<type> buf;
long unsigned read_ref,write_ref;
long unsigned size;
};

}

#endif