forked from qt-creator/qt-creator
debugger: add a dumper for QSharedPointer
This commit is contained in:
@@ -47,8 +47,11 @@
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QPointer>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QSharedPointer>
|
||||
#include <QtCore/QSharedDataPointer>
|
||||
#include <QtCore/QTextCodec>
|
||||
#include <QtCore/QVector>
|
||||
#include <QtCore/QWeakPointer>
|
||||
|
||||
int qtGhVersion = QT_VERSION;
|
||||
|
||||
@@ -1931,6 +1934,30 @@ static void qDumpQSet(QDumper &d)
|
||||
d.disarm();
|
||||
}
|
||||
|
||||
static void qDumpQSharedPointer(QDumper &d)
|
||||
{
|
||||
const QSharedPointer<int> &ptr =
|
||||
*reinterpret_cast<const QSharedPointer<int> *>(d.data);
|
||||
|
||||
if (isSimpleType(d.innertype))
|
||||
qDumpInnerValueHelper(d, d.innertype, ptr.data());
|
||||
else
|
||||
P(d, "value", "");
|
||||
P(d, "valuedisabled", "true");
|
||||
P(d, "numchild", 1);
|
||||
if (d.dumpChildren) {
|
||||
d << ",children=[";
|
||||
d.beginHash();
|
||||
P(d, "name", "data");
|
||||
qDumpInnerValue(d, d.innertype, ptr.data());
|
||||
d.endHash();
|
||||
I(d, "strongref", 44);
|
||||
I(d, "weakref", 45);
|
||||
d << "]";
|
||||
}
|
||||
d.disarm();
|
||||
}
|
||||
|
||||
static void qDumpQString(QDumper &d)
|
||||
{
|
||||
const QString &str = *reinterpret_cast<const QString *>(d.data);
|
||||
@@ -2480,6 +2507,8 @@ static void handleProtocolVersion2and3(QDumper & d)
|
||||
case 'S':
|
||||
if (isEqual(type, "QSet"))
|
||||
qDumpQSet(d);
|
||||
else if (isEqual(type, "QSharedPointer"))
|
||||
qDumpQSharedPointer(d);
|
||||
else if (isEqual(type, "QString"))
|
||||
qDumpQString(d);
|
||||
else if (isEqual(type, "QStringList"))
|
||||
@@ -2578,6 +2607,7 @@ void *qDumpObjectData440(
|
||||
#endif // PRIVATE_OBJECT_ALLOWED
|
||||
// << "\""NS"QRegion\","
|
||||
"\""NS"QSet\","
|
||||
"\""NS"QSharedPointer\","
|
||||
"\""NS"QString\","
|
||||
"\""NS"QStringList\","
|
||||
"\""NS"QTextCodec\","
|
||||
|
||||
Reference in New Issue
Block a user