dol: initial dol commit
[jump.git] / dol / src / dol / visitor / protothread / lib / WindowedFifo.h
diff --git a/dol/src/dol/visitor/protothread/lib/WindowedFifo.h b/dol/src/dol/visitor/protothread/lib/WindowedFifo.h
new file mode 100644 (file)
index 0000000..2803558
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _WINDOWEDFIFO_H_\r
+#define _WINDOWEDFIFO_H_\r
+\r
+class WindowedFifo {\r
+    public:\r
+        WindowedFifo(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
+    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 _isHeadReserved;\r
+        bool _isTailReserved;\r
+};\r
+\r
+#endif\r