summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qdebug.cpp
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2015-02-16 15:25:46 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-02-17 06:17:59 +0000
commit50e2bc2aa0f46562936a3137c15a2c9b4f67afde (patch)
treed482fffd5ee3fd3d006f0939a2e0e547f18cf691 /src/corelib/io/qdebug.cpp
parent51b7bd1e4faa5111489c4376a02969ad8197fadf (diff)
Fix QDebug cumulating operator<< with many Q_ENUM
The problem is that the operator<< was taking a non-const reference to the QDebug object. This causes a problem as all other operator<< return a temporary. Since every other roperator<< takes the QDebug by value, we should also take it by value in this case. Move the operator<< in qdebug.h because i don't want to #include qdebug.h from qobject.h And move the qt_QMetaEnum_debugOperator to be in the corresponding .cpp Task-number: QTBUG-44462 Change-Id: Ia01629224c58930c2997e767efc43de90d6309e2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/corelib/io/qdebug.cpp')
-rw-r--r--src/corelib/io/qdebug.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
index b0ee715c75..7b49505228 100644
--- a/src/corelib/io/qdebug.cpp
+++ b/src/corelib/io/qdebug.cpp
@@ -40,6 +40,7 @@
#endif
#include "qdebug.h"
+#include "qmetaobject.h"
#include <private/qtextstream_p.h>
#include <private/qtools_p.h>
@@ -643,4 +644,23 @@ QDebugStateSaver::~QDebugStateSaver()
d->restoreState();
}
+#ifndef QT_NO_QOBJECT
+/*!
+ \internal
+ */
+QDebug qt_QMetaEnum_debugOperator(QDebug &dbg, int value, const QMetaObject *meta, const char *name)
+{
+ QDebugStateSaver saver(dbg);
+ QMetaEnum me = meta->enumerator(meta->indexOfEnumerator(name));
+ const char *key = me.valueToKey(value);
+ dbg.nospace() << meta->className() << "::" << name << '(';
+ if (key)
+ dbg << key;
+ else
+ dbg << value;
+ dbg << ')';
+ return dbg;
+}
+#endif
+
QT_END_NAMESPACE