cec: stick some interfaces before the pthread stuff, so we can add other implementati...
[deb_libcec.git] / src / lib / util / buffer.h
index d49de62554ea7ea8305c1c810ce2809d8f2228eb..e0afddfa16d1daaf52af97f6fee5fbd5c7e4b0e9 100644 (file)
@@ -31,7 +31,7 @@
  *     http://www.pulse-eight.net/
  */
 
-#include "../platform/threads.h"
+#include "../platform/os-dependent.h"
 #include <queue>
 
 namespace CEC
@@ -40,13 +40,23 @@ namespace CEC
     struct CecBuffer
     {
     public:
-      CecBuffer(unsigned int iMaxSize = 100)
+      CecBuffer(size_t iMaxSize = 100)
       {
         m_maxSize = iMaxSize;
       }
-      virtual ~CecBuffer(void) {}
 
-      int Size(void) const { return m_buffer.size(); }
+      virtual ~CecBuffer(void)
+      {
+        Clear();
+      }
+
+      void Clear(void)
+      {
+        while (!m_buffer.empty())
+          m_buffer.pop();
+      }
+
+      size_t Size(void) const { return m_buffer.size(); }
 
       bool Push(_BType entry)
       {
@@ -62,7 +72,7 @@ namespace CEC
       {
         bool bReturn(false);
         CLockObject lock(&m_mutex);
-        if (m_buffer.size() > 0)
+        if (!m_buffer.empty())
         {
           entry = m_buffer.front();
           m_buffer.pop();
@@ -72,7 +82,7 @@ namespace CEC
       }
 
     private:
-      unsigned int       m_maxSize;
+      size_t             m_maxSize;
       std::queue<_BType> m_buffer;
       CMutex             m_mutex;
     };