summaryrefslogtreecommitdiffstats
path: root/src/core/resources/qhandlemanager_p.h
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-15 12:23:19 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-17 05:38:46 +0000
commite34394a63cf74cd4fdf729eac12258f2c555776b (patch)
tree2191cff9551de14aef57cb43200056d1ee169ff5 /src/core/resources/qhandlemanager_p.h
parent8eca0d465e6d30283fb41ba631f60c03d5047ef2 (diff)
Add debug operator for QHandleManager
Change-Id: I706b735235d2dd6ef8949dad1f0b3297275927ee Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/resources/qhandlemanager_p.h')
-rw-r--r--src/core/resources/qhandlemanager_p.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/core/resources/qhandlemanager_p.h b/src/core/resources/qhandlemanager_p.h
index 0d9a82b65..c0b14374a 100644
--- a/src/core/resources/qhandlemanager_p.h
+++ b/src/core/resources/qhandlemanager_p.h
@@ -61,6 +61,14 @@ QT_BEGIN_NAMESPACE
namespace Qt3DCore {
+#ifndef QT_NO_DEBUG_STREAM
+template <typename T, uint INDEXBITS>
+class QHandleManager;
+
+template <typename T, uint INDEXBITS = 16>
+QDebug operator<<(QDebug dbg, const QHandleManager<T, INDEXBITS> &manager);
+#endif
+
template <typename T, uint INDEXBITS = 16>
class QHandleManager
{
@@ -85,6 +93,8 @@ public:
private:
Q_DISABLE_COPY(QHandleManager)
+ friend QDebug operator<< <>(QDebug dbg, const QHandleManager<T, INDEXBITS> &manager);
+
template <typename U>
struct HandleEntry
{
@@ -211,6 +221,28 @@ const T *QHandleManager<T, INDEXBITS>::constData(const QHandle<T, INDEXBITS> &ha
return d;
}
+#ifndef QT_NO_DEBUG_STREAM
+template <typename T, uint INDEXBITS>
+QDebug operator<<(QDebug dbg, const QHandleManager<T, INDEXBITS> &manager)
+{
+ QDebugStateSaver saver(dbg);
+ dbg << "First free entry =" << manager.m_firstFreeEntry << endl;
+
+ const auto end = manager.m_entries.cend();
+ const auto max = manager.m_activeEntryCount;
+ auto i = 0;
+ for (auto it = manager.m_entries.cbegin(); it != end && i < max; ++it) {
+ const auto isActive = it->m_active;
+ if (isActive) {
+ dbg << *(it->m_data);
+ ++i;
+ }
+ }
+
+ return dbg;
+}
+#endif
+
} // Qt3D
QT_END_NAMESPACE