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