Diana Software
QCachedEventList.cc
Go to the documentation of this file.
1 #include "QCachedEventList.hh"
2 
4 
6 {
7  fFrees.clear();
8  fIndexes.clear();
9  fElements.clear();
10 }
11 
13 {
14  for(size_t i = 0; i < fElements.size(); i++)
15  {
16  delete fElements[i];
17  }
18 
19 }
20 
21 
23 {
24  fIndexes.clear();
25  for(size_t i = 0; i < fElements.size(); i++)
26  fFrees.push_back(i);
27 }
28 
29 
31 {
32  if(fFrees.empty()) {
33  fIndexes.push_back(fElements.size());
34  QEventAssembler* neva = new QEventAssembler();
35  neva->Assign(ev);
36  fElements.push_back(neva);
37  } else {
38  int index = fFrees.front();
39  fIndexes.push_back(index);
40  fElements[index]->Assign(ev);
41  fFrees.pop_front();
42  }
43 
44 }
45 
47 {
48  if(!fIndexes.empty()) {
49  fFrees.push_back(fIndexes.front());
50  fIndexes.pop_front();
51  }
52 }
53 
54 
55 
#define Q_END_NAMESPACE
Definition: QDiana.hh:22
#define Q_BEGIN_NAMESPACE
Definition: QDiana.hh:20
void Push(const QEvent &obj)
std::deque< int > fIndexes
std::deque< int > fFrees
std::vector< QEventAssembler * > fElements
Visitor class of QEvent that provides full handling of QEvent.
void Assign(const QEvent &ev)
copies the underlying QEvent (calls QEvent::operator=)
diana event
Definition: QEvent.hh:46