+#ifndef _WINDOWEDFIFO_H_\r
+#define _WINDOWEDFIFO_H_\r
+\r
+#include "systemc.h"\r
+\r
+class WindowedFifo {\r
+ public:\r
+ WindowedFifo(char* name, unsigned size);\r
+ virtual ~WindowedFifo();\r
+\r
+ virtual unsigned reserve(void** destination, unsigned len);\r
+ virtual void release();\r
+\r
+ virtual unsigned capture(void** destination, unsigned len);\r
+ virtual void consume();\r
+\r
+ virtual unsigned used() const;\r
+ virtual unsigned unused() const;\r
+ virtual unsigned size() const;\r
+ virtual char* getName() const;\r
+\r
+ protected:\r
+ char *_buffer;\r
+ unsigned _head;\r
+ unsigned _tail;\r
+ unsigned _headRoom;\r
+ unsigned _tailRoom;\r
+ unsigned _size;\r
+ unsigned _use;\r
+ unsigned _writeReserve;
+ unsigned _readReserve;
+ //bool _isFull;\r
+ bool _isHeadReserved;\r
+ bool _isTailReserved;\r
+ char *_name;\r
+ sc_event _readEvent;\r
+ sc_event _writeEvent;\r
+};\r
+\r
+#endif\r