1 #include "scd_rem_fifo_out.h"
5 #include "scd_logging.h"
8 scd_rem_fifo_out::scd_rem_fifo_out(sc_module_name name, int size):
9 sc_prim_channel(name), _num_elements(0), _first(0), _size(size)
12 _data = new char[size];
16 scd_rem_fifo_out::~scd_rem_fifo_out()
22 void scd_rem_fifo_out::write(char c)
24 while (_num_elements == _size)
27 _data[ (_first + _num_elements) % _size ] = c;
32 int scd_rem_fifo_out::wtest(int size)
34 return (size <= _size - _num_elements) ? 1 : 0;
38 void scd_rem_fifo_out::reset() { _num_elements = _first = 0; }
41 size_t scd_rem_fifo_out::available() const
45 if (_num_elements <= _size - _first)
46 avail = _num_elements;
48 avail = _size - _first;
54 const void* scd_rem_fifo_out::send() const { return _data + _first; }
57 void scd_rem_fifo_out::remove(size_t len)
62 assert(_num_elements >= len);
64 _first = (_first + len) % _size;