debugger: add a dumper for QSharedPointer

This commit is contained in:
hjk
2009-04-28 10:58:55 +02:00
parent 092d8ca964
commit 462a20461a
2 changed files with 44 additions and 2 deletions
+30
View File
@@ -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\","