QXRD  0.11.16
qcepimagequeue.cpp
Go to the documentation of this file.
1 #include "qcepdebug.h"
2 #include "qcepimagequeue.h"
3 #include "qcepimagedata.h"
4 #include "qcepapplication.h"
5 
6 template <typename T>
8  : m_NRows(QcepSettingsSaverPtr(), NULL, "nRows", 2048, "Number of Rows in Queued Images"),
9  m_NCols(QcepSettingsSaverPtr(), NULL, "nCols", 2048, "Number of Cols in Queued Images"),
10  m_Name(name)
11 {
13  g_Application->printMessage(tr("QcepImageQueue<T>::QcepImageQueue(%1) %2 begin [contains %3]")
14  .arg(m_Name).HEXARG(this).arg(m_Queue.size()));
15  }
16 }
17 
18 template <typename T>
20 {
22  g_Application->printMessage(tr("QcepImageQueue<T>::~QcepImageQueue(%1) %2 begin [contains %3]")
23  .arg(m_Name).HEXARG(this).arg(m_Queue.size()));
24  }
25 
26  deallocate();
27 
29  g_Application->printMessage(tr("QcepImageQueue<T>::~QcepImageQueue(%1) %2 end [contains %3]")
30  .arg(m_Name).HEXARG(this).arg(m_Queue.size()));
31  }
32 }
33 
34 template <typename T>
36 {
37  QMutexLocker lock(&m_Lock);
38 
39  while (!m_Queue.isEmpty()) {
40  QSharedPointer<T> img = m_Queue.dequeue();
42  g_Application->printMessage(tr("Deallocate %1").HEXARG(img.data()));
43  }
44  }
45 }
46 
47 template <typename T>
48 QSharedPointer<T> QcepImageQueue<T>::dequeue()
49 {
50  QMutexLocker lock(&m_Lock);
51 
52  if (m_Queue.isEmpty()) {
54  g_Application->printMessage(tr("QcepImageQueue::dequeue() = NULL from %1").arg(m_Name));
55  }
56 
57  return QSharedPointer<T>(NULL);
58  } else {
59  QSharedPointer<T> res = m_Queue.dequeue();
60 
62  g_Application->printMessage(tr("QcepImageQueue::dequeue() = %1 from %2, leaving %3")
63  .HEXARG(res.data()).arg(m_Name).arg(m_Queue.size()));
64  }
65 
66  return res;
67  }
68 }
69 
70 template <typename T>
71 QSharedPointer<T> QcepImageQueue<T>::operator[](int n)
72 {
73  QMutexLocker lock(&m_Lock);
74 
75  if (n < 0 || n >= m_Queue.size()) {
76  return QSharedPointer<T>(NULL);
77  } else {
78  return m_Queue[n];
79  }
80 }
81 
82 template <typename T>
83 void QcepImageQueue<T>::enqueue(QSharedPointer<T> data)
84 {
85  QMutexLocker lock(&m_Lock);
86 
88  g_Application->printMessage(tr("QcepImageQueue::enqueue(%1) into %2, starting with %3")
89  .HEXARG(data.data()).arg(m_Name).arg(m_Queue.size()));
90  }
91 
92  if (data) {
93  m_Queue.enqueue(data);
94  }
95 }
96 
97 template <typename T>
99 {
100  QMutexLocker lock(&m_Lock);
101 
103  g_Application->printMessage(tr("QcepImageQueue::size() = %1 for %2")
104  .arg(m_Queue.size()).arg(m_Name));
105  }
106 
107  return m_Queue.size();
108 }
109 
112 template class QcepImageQueue<QcepImageDataBase>;
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QSharedPointer< T > operator[](int n)
QQueue< QSharedPointer< T > > m_Queue
QSharedPointer< T > dequeue()
void enqueue(QSharedPointer< T > data)
QSharedPointer< QcepSettingsSaver > QcepSettingsSaverPtr
#define HEXARG(a)
Definition: qcepdebug.h:50
QcepImageQueue(QString name)
virtual void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
QcepApplication * g_Application
int size() const