MGF Server  2.1
Multigaze framework server
 All Classes Functions
CGDQueue.h
1 #pragma once
2 
3 #include <list>
4 
5 #include <boost\shared_ptr.hpp>
6 
7 #include "entries\CGDBlink.h"
8 #include "entries\CGDFixation.h"
9 #include "entries\CGDSingleSample.h"
10 
11 using namespace std;
12 
13 template<class T>
14 class GDLIBAPI CGDQueue
15 {
16 private:
17  unsigned int m_maxelements;
18  list<T> m_elements;
19 
20 public:
21  CGDQueue(int maxLength):
22  m_maxelements(maxLength), m_elements()
23  { }
24 
25  void clear()
26  {
27  if (m_elements.size() > 0)
28  m_elements.clear();
29  }
30 
31  void add(T e)
32  {
33  while(m_elements.size() >= m_maxelements)
34  m_elements.pop_front();
35 
36  m_elements.push_back(e);
37  }
38 
39  const T& get()
40  {
41  return m_elements.begin().get();
42  }
43 
44  T& pop()
45  {
46  return m_elements.pop_front().get();
47  }
48 };
49 
50 typedef boost::shared_ptr<CGDQueue<CGDBlinkPtr>> CGDBlinksQueuePtr;
51 typedef boost::shared_ptr<CGDQueue<CGDFixationPtr>> CGDFixationsQueuePtr;
52 typedef boost::shared_ptr<CGDQueue<CGDSingleSamplePtr>> CGDSSampleQueuePtr;
53