From 6edbc900b9dcd337b6f30504d6a84bc2b92834a9 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 26 Jun 2009 11:32:51 +0200 Subject: [PATCH] debugger: refactoring --- share/qtcreator/gdbmacros/gdbmacros.cpp | 574 +++++++++++++----------- 1 file changed, 304 insertions(+), 270 deletions(-) diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 7fc9085aa91..8b1b240cf17 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -113,7 +113,7 @@ int qtGhVersion = QT_VERSION; 'd.putItem(name, value)' roughly expands to: - d << (name) << "=\"" << value << "\""; + d.put((name)).put("=\"").put(value).put("\""; Useful (i.e. understood by the IDE) names include: @@ -134,7 +134,9 @@ int qtGhVersion = QT_VERSION; \c{ if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); + [...] + d.endChildren(); } */ @@ -440,37 +442,63 @@ struct QDumper { explicit QDumper(); ~QDumper(); - void checkFill(); - QDumper &operator<<(long c); - QDumper &operator<<(int i); - QDumper &operator<<(double d); - QDumper &operator<<(float d); - QDumper &operator<<(unsigned long c); - QDumper &operator<<(unsigned int i); - QDumper &operator<<(const void *p); - QDumper &operator<<(qulonglong c); - QDumper &operator<<(const char *str); - QDumper &operator<<(const QByteArray &ba); - QDumper &operator<<(const QString &str); - void put(char c); + // direct write to the output + QDumper &put(long c); + QDumper &put(int i); + QDumper &put(double d); + QDumper &put(float d); + QDumper &put(unsigned long c); + QDumper &put(unsigned int i); + QDumper &put(const void *p); + QDumper &put(qulonglong c); + QDumper &put(const char *str); + QDumper &put(const QByteArray &ba); + QDumper &put(const QString &str); + QDumper &put(char c); + + // convienience functions for writing key="value" pairs: template <class Value> - void putItem(const char *name, const Value &value); - template <class Value> - void putHash(const char *name, const Value &value); + void putItem(const char *name, const Value &value) + { + putCommaIfNeeded(); + put(name).put('=').put('"').put(value).put('"'); + } + + // convienience functions for writing typical properties. + // roughly equivalent to + // beginHash(); + // putItem("name", name); + // putItem("value", value); + // putItem("type", NS"QString"); + // putItem("numchild", "0"); + // putItem("valueencoded", "2"); + // endHash(); + void putHash(const char *name, const QString &value); + void putHash(const char *name, const QByteArray &value); + void putHash(const char *name, int value); + void putHash(const char *name, long value); + void putHash(const char *name, bool value); + void putHash(const char *name, QChar value); + + void beginHash(); // start of data hash output + void endHash(); // start of data hash output + + void beginChildren(); // start of children list + void endChildren(); // end of children list + + void beginItem(const char *name); // start of named item, ready to accept value + void endItem(); // end of named item, used after value output is complete - void beginItem(const char *name); - void endItem(); // convienience for putting "<n items>" void putItemCount(const char *name, int count); - - void addCommaIfNeeded(); - void putBase64Encoded(const char *buf, int n); + void putCommaIfNeeded(); + // convienience function for writing the last item of an abbreviated list void putEllipsis(); void disarm(); - void beginHash(); // start of data hash output - void endHash(); // start of data hash output + void putBase64Encoded(const char *buf, int n); + void checkFill(); // the dumper arguments int protocolVersion; // dumper protocol version @@ -486,14 +514,13 @@ struct QDumper void setupTemplateParameters(); enum { maxTemplateParameters = 10 }; const char *templateParameters[maxTemplateParameters + 1]; - int templateParametersCount; // internal state + int extraInt[4]; + bool success; // are we finished? bool full; int pos; - - int extraInt[4]; }; @@ -516,7 +543,7 @@ void QDumper::setupTemplateParameters() { char *s = const_cast<char *>(innertype); - templateParametersCount = 1; + int templateParametersCount = 1; templateParameters[0] = s; for (int i = 1; i != maxTemplateParameters + 1; ++i) templateParameters[i] = 0; @@ -530,58 +557,68 @@ void QDumper::setupTemplateParameters() templateParameters[templateParametersCount++] = s; } } + while (templateParametersCount < maxTemplateParameters) + templateParameters[templateParametersCount++] = 0; +} + +QDumper &QDumper::put(char c) +{ + checkFill(); + if (!full) + outBuffer[pos++] = c; + return *this; } -QDumper &QDumper::operator<<(unsigned long long c) +QDumper &QDumper::put(unsigned long long c) { checkFill(); pos += sprintf(outBuffer + pos, "%llu", c); return *this; } -QDumper &QDumper::operator<<(unsigned long c) +QDumper &QDumper::put(unsigned long c) { checkFill(); pos += sprintf(outBuffer + pos, "%lu", c); return *this; } -QDumper &QDumper::operator<<(float d) +QDumper &QDumper::put(float d) { checkFill(); pos += sprintf(outBuffer + pos, "%f", d); return *this; } -QDumper &QDumper::operator<<(double d) +QDumper &QDumper::put(double d) { checkFill(); pos += sprintf(outBuffer + pos, "%f", d); return *this; } -QDumper &QDumper::operator<<(unsigned int i) +QDumper &QDumper::put(unsigned int i) { checkFill(); pos += sprintf(outBuffer + pos, "%u", i); return *this; } -QDumper &QDumper::operator<<(long c) +QDumper &QDumper::put(long c) { checkFill(); pos += sprintf(outBuffer + pos, "%ld", c); return *this; } -QDumper &QDumper::operator<<(int i) +QDumper &QDumper::put(int i) { checkFill(); pos += sprintf(outBuffer + pos, "%d", i); return *this; } -QDumper &QDumper::operator<<(const void *p) +QDumper &QDumper::put(const void *p) { static char buf[100]; if (p) { @@ -592,27 +629,41 @@ QDumper &QDumper::operator<<(const void *p) put('0'); put('x'); } - *this << buf; + put(buf); } else { - *this << "<null>"; + put("<null>"); } return *this; } -void QDumper::checkFill() +QDumper &QDumper::put(const char *str) { - if (pos >= int(sizeof(outBuffer)) - 100) - full = true; + if (!str) + return put("<null>"); + while (*str) + put(*(str++)); + return *this; } -void QDumper::put(char c) +QDumper &QDumper::put(const QByteArray &ba) { - checkFill(); - if (!full) - outBuffer[pos++] = c; + putBase64Encoded(ba.constData(), ba.size()); + return *this; } -void QDumper::addCommaIfNeeded() +QDumper &QDumper::put(const QString &str) +{ + putBase64Encoded((const char *)str.constData(), 2 * str.size()); + return *this; +} + +void QDumper::checkFill() +{ + if (pos >= int(sizeof(outBuffer)) - 100) + full = true; +} + +void QDumper::putCommaIfNeeded() { if (pos == 0) return; @@ -655,27 +706,6 @@ void QDumper::putBase64Encoded(const char *buf, int n) } } -QDumper &QDumper::operator<<(const char *str) -{ - if (!str) - return *this << "<null>"; - while (*str) - put(*(str++)); - return *this; -} - -QDumper &QDumper::operator<<(const QByteArray &ba) -{ - putBase64Encoded(ba.constData(), ba.size()); - return *this; -} - -QDumper &QDumper::operator<<(const QString &str) -{ - putBase64Encoded((const char *)str.constData(), 2 * str.size()); - return *this; -} - void QDumper::disarm() { success = true; @@ -683,7 +713,7 @@ void QDumper::disarm() void QDumper::beginHash() { - addCommaIfNeeded(); + putCommaIfNeeded(); put('{'); } @@ -694,41 +724,45 @@ void QDumper::endHash() void QDumper::putEllipsis() { - addCommaIfNeeded(); - *this << "{name=\"<incomplete>\",value=\"\",type=\"" << innertype << "\"}"; + putCommaIfNeeded(); + put("{name=\"<incomplete>\",value=\"\",type=\"").put(innertype).put("\"}"); +} + +void QDumper::putItemCount(const char *name, int count) +{ + putCommaIfNeeded(); + put(name).put("=\"<").put(count).put(" items>\""); } + // // Some helpers to keep the dumper code short // -template <class Value> -void QDumper::putItem(const char *name, const Value &value) -{ - addCommaIfNeeded(); - *this << name << "=\"" << value << "\""; -} - void QDumper::beginItem(const char *name) { - addCommaIfNeeded(); - *this << name << "=\""; + putCommaIfNeeded(); + put(name).put('=').put('"'); } void QDumper::endItem() { - *this << "\""; + put('"'); } -void QDumper::putItemCount(const char *name, int count) +void QDumper::beginChildren() { - *this << name << "=\"<" << count << " items>\""; + putCommaIfNeeded(); + put("children=["); } +void QDumper::endChildren() +{ + put(']'); +} // simple string property -template <> -void QDumper::putHash<QString>(const char *name, const QString &value) +void QDumper::putHash(const char *name, const QString &value) { beginHash(); putItem("name", name); @@ -739,8 +773,7 @@ void QDumper::putHash<QString>(const char *name, const QString &value) endHash(); } -template <> -void QDumper::putHash<QByteArray>(const char *name, const QByteArray &value) +void QDumper::putHash(const char *name, const QByteArray &value) { beginHash(); putItem("name", name); @@ -752,8 +785,7 @@ void QDumper::putHash<QByteArray>(const char *name, const QByteArray &value) } // simple integer property -template <> -void QDumper::putHash<int>(const char *name, const int &value) +void QDumper::putHash(const char *name, int value) { beginHash(); putItem("name", name); @@ -762,8 +794,8 @@ void QDumper::putHash<int>(const char *name, const int &value) putItem("numchild", "0"); endHash(); } -template <> -void QDumper::putHash<long>(const char *name, const long &value) + +void QDumper::putHash(const char *name, long value) { beginHash(); putItem("name", name); @@ -774,8 +806,7 @@ void QDumper::putHash<long>(const char *name, const long &value) } // simple boolean property -template <> -void QDumper::putHash<bool>(const char *name, const bool &value) +void QDumper::putHash(const char *name, bool value) { beginHash(); putItem("name", name); @@ -786,8 +817,7 @@ void QDumper::putHash<bool>(const char *name, const bool &value) } // a single QChar -template<> -void QDumper::putHash<QChar>(const char *name, const QChar &value) +void QDumper::putHash(const char *name, QChar value) { beginHash(); putItem("name", name); @@ -850,14 +880,14 @@ static void qDumpInnerValueHelper(QDumper &d, const char *type, const void *addr return; case 'B': if (isEqual(type, "QByteArray")) { - d.addCommaIfNeeded(); - d << field << "encoded=\"1\","; + d.putCommaIfNeeded(); + d.put(field).put("encoded=\"1\","); d.putItem(field, *(QByteArray*)addr); } return; case 'C': if (isEqual(type, "QChar")) { - d.addCommaIfNeeded(); + d.putCommaIfNeeded(); QChar c = *(QChar *)addr; sprintf(buf, "'?', ucs=%d", c.unicode()); if (c.isPrint() && c.unicode() < 127) @@ -891,8 +921,8 @@ static void qDumpInnerValueHelper(QDumper &d, const char *type, const void *addr return; case 'S': if (isEqual(type, "QString")) { - d.addCommaIfNeeded(); - d << field << "encoded=\"2\","; + d.putCommaIfNeeded(); + d.put(field).put("encoded=\"2\""); d.putItem(field, *(QString*)addr); } return; @@ -955,26 +985,26 @@ static void qDumpQAbstractItem(QDumper &d) return; d.putItem("type", NS"QAbstractItem"); d.beginItem("addr"); - d << "$" << mm.r << "," << mm.c << "," << mm.p << "," << mm.m; + d.put('$').put(mm.r).put(',').put(mm.c).put(',').put(mm.p).put(',').put(mm.m); d.endItem(); - //d.putItem("value", "(" << rowCount << "," << columnCount << ")"); + //d.putItem("value", "(").put(rowCount).put(",").put(columnCount).put(")"); d.putItem("value", m->data(mi, Qt::DisplayRole).toString()); d.putItem("valueencoded", "2"); d.putItem("numchild", "1"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); for (int row = 0; row < rowCount; ++row) { for (int column = 0; column < columnCount; ++column) { QModelIndex child = m->index(row, column, mi); d.beginHash(); d.beginItem("name"); - d << "[" << row << "," << column << "]"; + d.put("[").put(row).put(",").put(column).put("]"); d.endItem(); //d.putItem("numchild", (m->hasChildren(child) ? "1" : "0")); d.putItem("numchild", "1"); d.beginItem("addr"); - d << "$" << child.row() << "," << child.column() << "," - << child.internalPointer() << "," << child.model(); + d.put("$").put(child.row()).put(",").put(child.column()).put(",") + .put(child.internalPointer()).put(",").put(child.model()); d.endItem(); d.putItem("type", NS"QAbstractItem"); d.putItem("value", m->data(mi, Qt::DisplayRole).toString()); @@ -991,7 +1021,7 @@ static void qDumpQAbstractItem(QDumper &d) d.putItem("type", NS"QString"); d.endHash(); */ - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1009,11 +1039,11 @@ static void qDumpQAbstractItemModel(QDumper &d) d.putItem("type", NS"QAbstractItemModel"); d.beginItem("value"); - d << "(" << rowCount << "," << columnCount << ")"; + d.put("(").put(rowCount).put(",").put(columnCount).put(")"); d.endItem(); d.putItem("numchild", "1"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("numchild", "1"); d.putItem("name", NS"QObject"); @@ -1028,21 +1058,21 @@ static void qDumpQAbstractItemModel(QDumper &d) QModelIndex mi = m.index(row, column); d.beginHash(); d.beginItem("name"); - d << "[" << row << "," << column << "]"; + d.put("[").put(row).put(",").put(column).put("]"); d.endItem(); d.putItem("value", m.data(mi, Qt::DisplayRole).toString()); d.putItem("valueencoded", "2"); //d.putItem("numchild", (m.hasChildren(mi) ? "1" : "0")); d.putItem("numchild", "1"); d.beginItem("addr"); - d << "$" << mi.row() << "," << mi.column() << "," - << mi.internalPointer() << "," << mi.model(); + d.put("$").put(mi.row()).put(",").put(mi.column()).put(","); + d.put(mi.internalPointer()).put(",").put(mi.model()); d.endItem(); d.putItem("type", NS"QAbstractItem"); d.endHash(); } } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1058,9 +1088,9 @@ static void qDumpQByteArray(QDumper &d) d.beginItem("value"); if (ba.size() <= 100) - d << ba; + d.put(ba); else - d << ba.left(100) << " <size: " << ba.size() << ", cut...>"; + d.put(ba.left(100)).put(" <size: ").put(ba.size()).put(", cut...>"); d.endItem(); d.putItem("valueencoded", "1"); d.putItem("type", NS"QByteArray"); @@ -1068,7 +1098,7 @@ static void qDumpQByteArray(QDumper &d) d.putItem("childtype", "char"); d.putItem("childnumchild", "0"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); char buf[20]; for (int i = 0; i != ba.size(); ++i) { unsigned char c = ba.at(i); @@ -1079,7 +1109,7 @@ static void qDumpQByteArray(QDumper &d) d.putItem("value", buf); d.endHash(); } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1111,7 +1141,7 @@ static void qDumpQDateTime(QDumper &d) d.putItem("type", NS"QDateTime"); d.putItem("numchild", "3"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("isNull", date.isNull()); d.putHash("toTime_t", (long)date.toTime_t()); d.putHash("toString", date.toString()); @@ -1124,7 +1154,7 @@ static void qDumpQDateTime(QDumper &d) #if 0 d.beginHash(); d.putItem("name", "toUTC"); - d.putItem("exp", "(("NSX"QDateTime"NSY"*)" << d.data << ")" + d.putItem("exp", "(("NSX"QDateTime"NSY"*)").put(d.data).put(")" "->toTimeSpec('"NS"Qt::UTC')"); d.putItem("type", NS"QDateTime"); d.putItem("numchild", "1"); @@ -1134,14 +1164,14 @@ static void qDumpQDateTime(QDumper &d) #if 0 d.beginHash(); d.putItem("name", "toLocalTime"); - d.putItem("exp", "(("NSX"QDateTime"NSY"*)" << d.data << ")" + d.putItem("exp", "(("NSX"QDateTime"NSY"*)").put(d.data).put(")" "->toTimeSpec('"NS"Qt::LocalTime')"); d.putItem("type", NS"QDateTime"); d.putItem("numchild", "1"); d.endHash(); #endif - d << "]"; + d.endChildren(); } d.disarm(); #endif // ifdef QT_NO_DATESTRING @@ -1155,10 +1185,10 @@ static void qDumpQDir(QDumper &d) d.putItem("type", NS"QDir"); d.putItem("numchild", "3"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("absolutePath", dir.absolutePath()); d.putHash("canonicalPath", dir.canonicalPath()); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1171,10 +1201,10 @@ static void qDumpQFile(QDumper &d) d.putItem("type", NS"QFile"); d.putItem("numchild", "2"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("fileName", file.fileName()); d.putHash("exists", file.exists()); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1187,7 +1217,7 @@ static void qDumpQFileInfo(QDumper &d) d.putItem("type", NS"QFileInfo"); d.putItem("numchild", "3"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("absolutePath", info.absolutePath()); d.putHash("absoluteFilePath", info.absoluteFilePath()); d.putHash("canonicalPath", info.canonicalPath()); @@ -1232,7 +1262,7 @@ static void qDumpQFileInfo(QDumper &d) d.putItem("value", info.created().toString()); d.putItem("valueencoded", "2"); d.beginItem("exp"); - d << "(("NSX"QFileInfo"NSY"*)" << d.data << ")->created()"; + d.put("(("NSX"QFileInfo"NSY"*)").put(d.data).put(")->created()"); d.endItem(); d.putItem("type", NS"QDateTime"); d.putItem("numchild", "1"); @@ -1243,7 +1273,7 @@ static void qDumpQFileInfo(QDumper &d) d.putItem("value", info.lastModified().toString()); d.putItem("valueencoded", "2"); d.beginItem("exp"); - d << "(("NSX"QFileInfo"NSY"*)" << d.data << ")->lastModified()"; + d.put("(("NSX"QFileInfo"NSY"*)").put(d.data).put(")->lastModified()"); d.endItem(); d.putItem("type", NS"QDateTime"); d.putItem("numchild", "1"); @@ -1254,13 +1284,13 @@ static void qDumpQFileInfo(QDumper &d) d.putItem("value", info.lastRead().toString()); d.putItem("valueencoded", "2"); d.beginItem("exp"); - d << "(("NSX"QFileInfo"NSY"*)" << d.data << ")->lastRead()"; + d.put("(("NSX"QFileInfo"NSY"*)").put(d.data).put(")->lastRead()"); d.endItem(); d.putItem("type", NS"QDateTime"); d.putItem("numchild", "1"); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1348,18 +1378,19 @@ static void qDumpQHash(QDumper &d) int valueOffset = hashOffset(opt, false, keySize, valueSize); d.beginItem("extra"); - d << "isSimpleKey: " << isSimpleKey - << " isSimpleValue: " << isSimpleValue - << " valueType: '" << isSimpleValue - << " keySize: " << keyOffset << " valueOffset: " << valueOffset - << " opt: " << opt; + d.put("isSimpleKey: ").put(isSimpleKey); + d.put(" isSimpleValue: ").put(isSimpleValue); + d.put(" valueType: '").put(isSimpleValue); + d.put(" keySize: ").put(keyOffset); + d.put(" valueOffset: ").put(valueOffset); + d.put(" opt: ").put(opt); d.endItem(); QHashData::Node *node = h->firstNode(); QHashData::Node *end = reinterpret_cast<QHashData::Node *>(h); int i = 0; - d << ",children=["; + d.beginChildren(); while (node != end) { d.beginHash(); d.putItem("name", i); @@ -1370,18 +1401,19 @@ static void qDumpQHash(QDumper &d) d.putItem("addr", addOffset(node, valueOffset)); } else { d.beginItem("exp"); - d << "*('"NS"QHashNode<" << keyType << "," - << valueType << " >'*)" << node; + d.put("*('"NS"QHashNode<").put(keyType).put("," + ).put(valueType).put(" >'*)").put(node); d.endItem(); d.beginItem("type"); - d << "'"NS"QHashNode<" << keyType << "," << valueType << " >'"; + d.put("'"NS"QHashNode<").put(keyType).put(",") + .put(valueType).put(" >'"); d.endItem(); } d.endHash(); ++i; node = QHashData::nextNode(node); } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1405,7 +1437,7 @@ static void qDumpQHashNode(QDumper &d) d.putItem("numchild", 2); if (d.dumpChildren) { // there is a hash specialization in case the keys are integers or shorts - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "key"); d.putItem("type", keyType); @@ -1416,7 +1448,7 @@ static void qDumpQHashNode(QDumper &d) d.putItem("type", valueType); d.putItem("addr", addOffset(h, valueOffset)); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1425,11 +1457,11 @@ static void qDumpQHashNode(QDumper &d) static void qDumpQImage(QDumper &d) { const QImage &im = *reinterpret_cast<const QImage *>(d.data); - d.putItem("value", "(" << im.width() << "x" << im.height() << ")"); + d.putItem("value", "(").put(im.width()).put("x").put(im.height()).put(")"); d.putItem("type", NS"QImage"); d.putItem("numchild", "1"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "data"); d.putItem("type", NS "QImageData"); @@ -1504,7 +1536,7 @@ static void qDumpQList(QDumper &d) d.putItem("childtype", d.innertype); if (n > 1000) n = 1000; - d << ",children=["; + d.beginChildren(); for (int i = 0; i != n; ++i) { d.beginHash(); d.putItem("name", i); @@ -1512,7 +1544,7 @@ static void qDumpQList(QDumper &d) void *p = ldata.d->array + i + pdata->begin; d.putItem("saddr", p); if (*(void**)p) { - //d.putItem("value","@" << p); + //d.putItem("value","@").put(p); qDumpInnerValue(d, strippedInnerType.data(), deref(p)); } else { d.putItem("value", "<null>"); @@ -1534,7 +1566,7 @@ static void qDumpQList(QDumper &d) } if (n < nn) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1564,7 +1596,7 @@ static void qDumpQLinkedList(QDumper &d) d.putItem("childtype", d.innertype); if (n > 1000) n = 1000; - d << ",children=["; + d.beginChildren(); const void *p = deref(ldata); for (int i = 0; i != n; ++i) { d.beginHash(); @@ -1576,7 +1608,7 @@ static void qDumpQLinkedList(QDumper &d) } if (n < nn) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1589,33 +1621,33 @@ static void qDumpQLocale(QDumper &d) d.putItem("type", NS"QLocale"); d.putItem("numchild", "8"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "country"); d.beginItem("exp"); - d << "(("NSX"QLocale"NSY"*)" << d.data << ")->country()"; + d.put("(("NSX"QLocale"NSY"*)").put(d.data).put(")->country()"); d.endItem(); d.endHash(); d.beginHash(); d.putItem("name", "language"); d.beginItem("exp"); - d << "(("NSX"QLocale"NSY"*)" << d.data << ")->language()"; + d.put("(("NSX"QLocale"NSY"*)").put(d.data).put(")->language()"); d.endItem(); d.endHash(); d.beginHash(); d.putItem("name", "measurementSystem"); d.beginItem("exp"); - d << "(("NSX"QLocale"NSY"*)" << d.data << ")->measurementSystem()"; + d.put("(("NSX"QLocale"NSY"*)").put(d.data).put(")->measurementSystem()"); d.endItem(); d.endHash(); d.beginHash(); d.putItem("name", "numberOptions"); d.beginItem("exp"); - d << "(("NSX"QLocale"NSY"*)" << d.data << ")->numberOptions()"; + d.put("(("NSX"QLocale"NSY"*)").put(d.data).put(")->numberOptions()"); d.endItem(); d.endHash(); @@ -1629,7 +1661,7 @@ static void qDumpQLocale(QDumper &d) d.putHash("groupSeparator", locale.groupSeparator()); d.putHash("negativeSign", locale.negativeSign()); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1654,7 +1686,7 @@ static void qDumpQMapNode(QDumper &d) unsigned keyOffset = 2 * sizeof(void*) - mapnodesize; unsigned valueOffset = 2 * sizeof(void*) - mapnodesize + valueOff; - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "key"); qDumpInnerValue(d, keyType, addOffset(h, keyOffset)); @@ -1664,7 +1696,7 @@ static void qDumpQMapNode(QDumper &d) d.putItem("name", "value"); qDumpInnerValue(d, valueType, addOffset(h, valueOffset)); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); @@ -1705,11 +1737,11 @@ static void qDumpQMap(QDumper &d) int valueOffset = 2 * sizeof(void*) - int(mapnodesize) + valueOff; d.beginItem("extra"); - d << "simplekey: " << isSimpleKey << " isSimpleValue: " << isSimpleValue - << " keyOffset: " << keyOffset << " valueOffset: " << valueOffset - << " mapnodesize: " << mapnodesize; + d.put("simplekey: ").put(isSimpleKey).put(" isSimpleValue: ").put(isSimpleValue); + d.put(" keyOffset: ").put(keyOffset).put(" valueOffset: ").put(valueOffset); + d.put(" mapnodesize: ").put(mapnodesize); d.endItem(); - d << ",children=["; + d.beginChildren(); QMapData::Node *node = reinterpret_cast<QMapData::Node *>(h->forward[0]); QMapData::Node *end = reinterpret_cast<QMapData::Node *>(h); @@ -1727,24 +1759,25 @@ static void qDumpQMap(QDumper &d) #if QT_VERSION >= 0x040500 // actually, any type (even 'char') will do... d.beginItem("type"); - d << NS"QMapNode<" << keyType << "," << valueType << " >"; + d.put(NS"QMapNode<").put(keyType).put(","); + d.put(valueType).put(" >"); d.endItem(); d.beginItem("exp"); - d << "*('"NS"QMapNode<" - << keyType << "," << valueType << " >'*)" << node; + d.put("*('"NS"QMapNode<").put(keyType).put(","); + d.put(valueType).put(" >'*)").put(node); d.endItem(); - //d.putItem("exp", "*('"NS"QMapData'*)" << (void*)node); - //d.putItem("exp", "*(char*)" << (void*)node); + //d.putItem("exp", "*('"NS"QMapData'*)").put((void*)node); + //d.putItem("exp", "*(char*)").put((void*)node); // d.putItem("addr", node); does not work as gdb fails to parse #else d.beginItem("type"); - d << NS"QMapData::Node<" - << keyType << "," << valueType << " >"; + d.put(NS"QMapData::Node<").put(keyType).put(","); + d.put(valueType).put(" >"); d.endItem(); d.beginItem("exp"); - d << "*('"NS"QMapData::Node<" - << keyType << "," << valueType << " >'*)" << node; + d.put("*('"NS"QMapData::Node<").put(keyType).put(","); + d.put(valueType).put(" >'*)").put(node); d.endItem(); #endif } @@ -1753,7 +1786,7 @@ static void qDumpQMap(QDumper &d) ++i; node = node->forward[0]; } - d << "]"; + d.endChildren(); } d.disarm(); @@ -1771,11 +1804,11 @@ static void qDumpQModelIndex(QDumper &d) d.putItem("type", NS"QModelIndex"); if (mi->isValid()) { d.beginItem("value"); - d << "(" << mi->row() << ", " << mi->column() << ")"; + d.put("(").put(mi->row()).put(", ").put(mi->column()).put(")"); d.endItem(); d.putItem("numchild", 5); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("row", mi->row()); d.putHash("column", mi->column()); @@ -1784,12 +1817,12 @@ static void qDumpQModelIndex(QDumper &d) const QModelIndex parent = mi->parent(); d.beginItem("value"); if (parent.isValid()) - d << "(" << mi->row() << ", " << mi->column() << ")"; + d.put("(").put(mi->row()).put(", ").put(mi->column()).put(")"); else - d << "<invalid>"; + d.put("<invalid>"); d.endItem(); d.beginItem("exp"); - d << "(("NSX"QModelIndex"NSY"*)" << d.data << ")->parent()"; + d.put("(("NSX"QModelIndex"NSY"*)").put(d.data).put(")->parent()"); d.endItem(); d.putItem("type", NS"QModelIndex"); d.putItem("numchild", "1"); @@ -1804,7 +1837,7 @@ static void qDumpQModelIndex(QDumper &d) d.putItem("numchild", "1"); d.endHash(); - d << "]"; + d.endChildren(); } } else { d.putItem("value", "<invalid>"); @@ -1833,14 +1866,14 @@ static void qDumpQObject(QDumper &d) signalCount += (mt == QMetaMethod::Signal); slotCount += (mt == QMetaMethod::Slot); } - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "properties"); // FIXME: Note that when simply using '(QObject*)' // in the cast below, Gdb/MI _sometimes_ misparses // expressions further down in the tree. d.beginItem("exp"); - d << "*(class '"NS"QObject'*)" << d.data; + d.put("*(class '"NS"QObject'*)").put(d.data); d.endItem(); d.putItem("type", NS"QObjectPropertyList"); d.putItemCount("value", mo->propertyCount()); @@ -1849,7 +1882,7 @@ static void qDumpQObject(QDumper &d) #if 0 d.beginHash(); d.putItem("name", "methods"); - d.putItem("exp", "*(class '"NS"QObject'*)" << d.data); + d.putItem("exp", "*(class '"NS"QObject'*)").put(d.data); d.putItemCount("value", mo->methodCount()); d.putItem("numchild", mo->methodCount()); d.endHash(); @@ -1857,14 +1890,14 @@ static void qDumpQObject(QDumper &d) #if 0 d.beginHash(); d.putItem("name", "senders"); - d.putItem("exp", "(*(class '"NS"ObjectPrivate'*)" << dfunc(ob) << ")->senders"); + d.putItem("exp", "(*(class '"NS"ObjectPrivate'*)").put(dfunc(ob)).put(")->senders"); d.putItem("type", NS"QList<"NS"QObjectPrivateSender>"); d.endHash(); #endif d.beginHash(); d.putItem("name", "signals"); d.beginItem("exp"); - d << "*(class '"NS"QObject'*)" << d.data; + d.put("*(class '"NS"QObject'*)").put(d.data); d.endItem(); d.putItem("type", NS"QObjectSignalList"); d.putItemCount("value", signalCount); @@ -1873,7 +1906,7 @@ static void qDumpQObject(QDumper &d) d.beginHash(); d.putItem("name", "slots"); d.beginItem("exp"); - d << "*(class '"NS"QObject'*)" << d.data; + d.put("*(class '"NS"QObject'*)").put(d.data); d.endItem(); d.putItem("type", NS"QObjectSlotList"); d.putItemCount("value", slotCount); @@ -1883,7 +1916,7 @@ static void qDumpQObject(QDumper &d) d.beginHash(); d.putItem("name", "children"); // works always, but causes additional traffic on the list - //d.putItem("exp", "((class '"NS"QObject'*)" << d.data << ")->children()"); + //d.putItem("exp", "((class '"NS"QObject'*)").put(d.data).put(")->children()"); // //d.putItem("addr", addOffset(dfunc(ob), childrenOffset)); //d.putItem("type", NS"QList<QObject *>"); @@ -1905,7 +1938,7 @@ static void qDumpQObject(QDumper &d) d.putItem("numchild", "0"); d.endHash(); #endif - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1918,14 +1951,14 @@ static void qDumpQObjectPropertyList(QDumper &d) d.putItem("type", NS"QObjectPropertyList"); d.putItem("numchild", mo->propertyCount()); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); for (int i = mo->propertyCount(); --i >= 0; ) { const QMetaProperty & prop = mo->property(i); d.beginHash(); d.putItem("name", prop.name()); d.beginItem("exp"); - d << "((" << mo->className() << "*)" << ob - << ")->" << prop.name() << "()"; + d.put("((").put(mo->className()).put("*)"); + d.put(ob).put(")->").put(prop.name()).put("()"); d.endItem(); if (isEqual(prop.typeName(), "QString")) { d.putItem("value", prop.read(ob).toString()); @@ -1943,7 +1976,7 @@ static void qDumpQObjectPropertyList(QDumper &d) d.putItem("numchild", "1"); d.endHash(); } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -1958,22 +1991,22 @@ static void qDumpQObjectMethodList(QDumper &d) d.putItem("childtype", "QMetaMethod::Method"); d.putItem("childnumchild", "0"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); for (int i = 0; i != mo->methodCount(); ++i) { const QMetaMethod & method = mo->method(i); int mt = method.methodType(); d.beginHash(); d.beginItem("name"); - d << i << " " << mo->indexOfMethod(method.signature()) - << " " << method.signature(); + d.put(i).put(" ").put(mo->indexOfMethod(method.signature())); + d.put(" ").put(method.signature()); d.endItem(); d.beginItem("value"); - d << (mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>") - << " (" << mt << ")"; + d.put((mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>")); + d.put(" (").put(mt).put(")"); d.endItem(); d.endHash(); } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2014,19 +2047,19 @@ static void qDumpQObjectSignal(QDumper &d) #if QT_VERSION >= 0x040400 if (d.dumpChildren) { const QObject *ob = reinterpret_cast<const QObject *>(d.data); - d << ",children=["; + d.beginChildren(); const ConnectionList &connList = qConnectionList(ob, signalNumber); for (int i = 0; i != connList.size(); ++i) { const Connection &conn = connectionAt(connList, i); d.beginHash(); d.beginItem("name"); - d << i << " receiver"; + d.put(i).put(" receiver"); d.endItem(); qDumpInnerValueHelper(d, NS"QObject *", conn.receiver); d.endHash(); d.beginHash(); d.beginItem("name"); - d << i << " slot"; + d.put(i).put(" slot"); d.endItem(); d.putItem("type", ""); if (conn.receiver) @@ -2037,16 +2070,16 @@ static void qDumpQObjectSignal(QDumper &d) d.endHash(); d.beginHash(); d.beginItem("name"); - d << i << " type"; + d.put(i).put(" type"); d.endItem(); d.putItem("type", ""); d.beginItem("value"); - d << "<" << qConnectionTypes[conn.method] << " connection>"; + d.put("<").put(qConnectionTypes[conn.method]).put(" connection>"); d.endItem(); d.putItem("numchild", "0"); d.endHash(); } - d << "]"; + d.endChildren(); d.putItem("numchild", connList.size()); } #endif @@ -2064,7 +2097,7 @@ static void qDumpQObjectSignalList(QDumper &d) d.putItem("numchild", count); #if QT_VERSION >= 0x040400 if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); for (int i = 0; i != mo->methodCount(); ++i) { const QMetaMethod & method = mo->method(i); if (method.methodType() == QMetaMethod::Signal) { @@ -2076,13 +2109,13 @@ static void qDumpQObjectSignalList(QDumper &d) d.putItem("numchild", connList.size()); //d.putItem("numchild", "1"); d.beginItem("exp"); - d << "*(class '"NS"QObject'*)" << d.data; + d.put("*(class '"NS"QObject'*)").put(d.data); d.endItem(); d.putItem("type", NS"QObjectSignal"); d.endHash(); } } - d << "]"; + d.endChildren(); } #endif d.disarm(); @@ -2098,7 +2131,7 @@ static void qDumpQObjectSlot(QDumper &d) #if QT_VERSION >= 0x040400 if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); int numchild = 0; const QObject *ob = reinterpret_cast<const QObject *>(d.data); const ObjectPrivate *p = reinterpret_cast<const ObjectPrivate *>(dfunc(ob)); @@ -2113,13 +2146,13 @@ static void qDumpQObjectSlot(QDumper &d) const QMetaMethod &method = sender->metaObject()->method(signal); d.beginHash(); d.beginItem("name"); - d << s << " sender"; + d.put(s).put(" sender"); d.endItem(); qDumpInnerValueHelper(d, NS"QObject *", sender); d.endHash(); d.beginHash(); d.beginItem("name"); - d << s << " signal"; + d.put(s).put(" signal"); d.endItem(); d.putItem("type", ""); d.putItem("value", method.signature()); @@ -2127,18 +2160,19 @@ static void qDumpQObjectSlot(QDumper &d) d.endHash(); d.beginHash(); d.beginItem("name"); - d << s << " type"; + d.put(s).put(" type"); d.endItem(); d.putItem("type", ""); d.beginItem("value"); - d << "<" << qConnectionTypes[conn.method] << " connection>"; + d.put("<").put(qConnectionTypes[conn.method]); + d.put(" connection>"); d.endItem(); d.putItem("numchild", "0"); d.endHash(); } } } - d << "]"; + d.endChildren(); d.putItem("numchild", numchild); } #endif @@ -2159,7 +2193,7 @@ static void qDumpQObjectSlotList(QDumper &d) d.putItem("numchild", count); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); #if QT_VERSION >= 0x040400 for (int i = 0; i != mo->methodCount(); ++i) { const QMetaMethod & method = mo->method(i); @@ -2183,14 +2217,14 @@ static void qDumpQObjectSlotList(QDumper &d) } d.putItem("numchild", numchild); d.beginItem("exp"); - d << "*(class '"NS"QObject'*)" << d.data; + d.put("*(class '"NS"QObject'*)").put(d.data); d.endItem(); d.putItem("type", NS"QObjectSlot"); d.endHash(); } } #endif - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2200,7 +2234,7 @@ static void qDumpQObjectSlotList(QDumper &d) static void qDumpQPixmap(QDumper &d) { const QPixmap &im = *reinterpret_cast<const QPixmap *>(d.data); - d.putItem("value", "(" << im.width() << "x" << im.height() << ")"); + d.putItem("value", "(").put(im.width()).put("x").put(im.height()).put(")"); d.putItem("type", NS"QPixmap"); d.putItem("numchild", "0"); d.disarm(); @@ -2228,7 +2262,7 @@ static void qDumpQSet(QDumper &d) if (d.dumpChildren) { if (n > 100) n = 100; - d << ",children=["; + d.beginChildren(); int i = 0; for (int bucket = 0; bucket != hd->numBuckets && i <= 10000; ++bucket) { for (node = hd->buckets[bucket]; node->next; node = node->next) { @@ -2236,9 +2270,9 @@ static void qDumpQSet(QDumper &d) d.putItem("name", i); d.putItem("type", d.innertype); d.beginItem("exp"); - d << "(('"NS"QHashNode<" << d.innertype - << ","NS"QHashDummyValue>'*)" - << static_cast<const void*>(node) << ")->key"; + d.put("(('"NS"QHashNode<").put(d.innertype + ).put(","NS"QHashDummyValue>'*)" + ).put(static_cast<const void*>(node)).put(")->key"); d.endItem(); d.endHash(); ++i; @@ -2248,7 +2282,7 @@ static void qDumpQSet(QDumper &d) } } } - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2266,7 +2300,7 @@ static void qDumpQSharedPointer(QDumper &d) d.putItem("valuedisabled", "true"); d.putItem("numchild", 1); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "data"); qDumpInnerValue(d, d.innertype, ptr.data()); @@ -2288,7 +2322,7 @@ static void qDumpQSharedPointer(QDumper &d) d.putItem("addr", strong); d.putItem("numchild", "0"); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2337,7 +2371,7 @@ static void qDumpQStringList(QDumper &d) if (d.dumpChildren) { if (n > 1000) n = 1000; - d << ",children=["; + d.beginChildren(); for (int i = 0; i != n; ++i) { d.beginHash(); d.putItem("name", i); @@ -2347,7 +2381,7 @@ static void qDumpQStringList(QDumper &d) } if (n < list.size()) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2360,10 +2394,10 @@ static void qDumpQTextCodec(QDumper &d) d.putItem("type", NS"QTextCodec"); d.putItem("numchild", "2"); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.putHash("name", codec.name()); d.putHash("mibEnum", codec.mibEnum()); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2421,7 +2455,7 @@ static void qDumpQVariant(QDumper &d) d.putItem("value", "(invalid)"); } else if (value.isEmpty()) { d.beginItem("value"); - d << "(" << v.typeName() << ") " << qPrintable(value); + d.put("(").put(v.typeName()).put(") ").put(qPrintable(value)); d.endItem(); } else { QByteArray ba; @@ -2435,7 +2469,7 @@ static void qDumpQVariant(QDumper &d) d.putItem("type", NS"QVariant"); d.putItem("numchild", (isInvalid ? "0" : "1")); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "value"); if (!exp.isEmpty()) @@ -2447,7 +2481,7 @@ static void qDumpQVariant(QDumper &d) d.putItem("type", v.typeName()); d.putItem("numchild", numchild); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2479,7 +2513,7 @@ static void qDumpQVector(QDumper &d) isPointerType(d.innertype) ? strippedInnerType.data() : 0; if (n > 1000) n = 1000; - d << ",children=["; + d.beginChildren(); for (int i = 0; i != n; ++i) { d.beginHash(); d.putItem("name", i); @@ -2489,7 +2523,7 @@ static void qDumpQVector(QDumper &d) } if (n < nn) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2507,7 +2541,7 @@ static void qDumpQWeakPointer(QDumper &d) d.putItem("valuedisabled", "true"); d.putItem("numchild", 1); if (d.dumpChildren) { - d << ",children=["; + d.beginChildren(); d.beginHash(); d.putItem("name", "data"); qDumpInnerValue(d, d.innertype, value); @@ -2528,7 +2562,7 @@ static void qDumpQWeakPointer(QDumper &d) d.putItem("addr", strong); d.putItem("numchild", "0"); d.endHash(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2573,7 +2607,7 @@ static void qDumpStdList(QDumper &d) QByteArray strippedInnerType = stripPointerType(d.innertype); const char *stripped = isPointerType(d.innertype) ? strippedInnerType.data() : 0; - d << ",children=["; + d.beginChildren(); it = list.begin(); for (int i = 0; i < 1000 && it != list.end(); ++i, ++it) { d.beginHash(); @@ -2583,7 +2617,7 @@ static void qDumpStdList(QDumper &d) } if (it != list.end()) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2626,13 +2660,13 @@ static void qDumpStdMap(QDumper &d) int valueOffset = d.extraInt[2]; d.beginItem("extra"); - d << "isSimpleKey: " << isSimpleKey - << " isSimpleValue: " << isSimpleValue - << " valueType: '" << valueType - << " valueOffset: " << valueOffset; + d.put("isSimpleKey: ").put(isSimpleKey); + d.put(" isSimpleValue: ").put(isSimpleValue); + d.put(" valueType: '").put(valueType); + d.put(" valueOffset: ").put(valueOffset); d.endItem(); - d << ",children=["; + d.beginChildren(); it = map.begin(); for (int i = 0; i < 1000 && it != map.end(); ++i, ++it) { d.beginHash(); @@ -2653,7 +2687,7 @@ static void qDumpStdMap(QDumper &d) } if (it != map.end()) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2685,10 +2719,10 @@ static void qDumpStdSet(QDumper &d) isPointerType(d.innertype) ? strippedInnerType.data() : 0; d.beginItem("extra"); - d << "valueOffset: " << valueOffset; + d.put("valueOffset: ").put(valueOffset); d.endItem(); - d << ",children=["; + d.beginChildren(); it = set.begin(); for (int i = 0; i < 1000 && it != set.end(); ++i, ++it) { const void *node = it.operator->(); @@ -2699,7 +2733,7 @@ static void qDumpStdSet(QDumper &d) } if (it != set.end()) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -2713,9 +2747,9 @@ static void qDumpStdString(QDumper &d) qCheckAccess(str.c_str() + str.size() - 1); } - d << ",value=\""; + d.beginItem("value"); d.putBase64Encoded(str.c_str(), str.size()); - d << "\""; + d.endItem(); d.putItem("valueencoded", "1"); d.putItem("type", "std::string"); d.putItem("numchild", "0"); @@ -2732,9 +2766,9 @@ static void qDumpStdWString(QDumper &d) qCheckAccess(str.c_str() + str.size() - 1); } - d << ",value=\""; + d.beginItem("value"); d.putBase64Encoded((const char *)str.c_str(), str.size() * sizeof(wchar_t)); - d << "\""; + d.endItem(); d.putItem("valueencoded", (sizeof(wchar_t) == 2 ? "2" : "3")); d.putItem("type", "std::wstring"); d.putItem("numchild", "0"); @@ -2780,7 +2814,7 @@ static void qDumpStdVector(QDumper &d) isPointerType(d.innertype) ? strippedInnerType.data() : 0; if (n > 1000) n = 1000; - d << ",children=["; + d.beginChildren(); for (int i = 0; i != n; ++i) { d.beginHash(); d.putItem("name", i); @@ -2790,7 +2824,7 @@ static void qDumpStdVector(QDumper &d) } if (n < nn) d.putEllipsis(); - d << "]"; + d.endChildren(); } d.disarm(); } @@ -3010,7 +3044,7 @@ void *qDumpObjectData440( // currently require special hardcoded handling in the debugger plugin. // They are mentioned here nevertheless. For types that are not listed // here, dumpers won't be used. - d << "dumpers=[" + d.put("dumpers=[" "\""NS"QAbstractItem\"," "\""NS"QAbstractItemModel\"," "\""NS"QByteArray\"," @@ -3036,7 +3070,7 @@ void *qDumpObjectData440( "\""NS"QObjectSignalList\"," "\""NS"QObjectSlot\"," "\""NS"QObjectSlotList\"," - // << "\""NS"QRegion\"," + //"\""NS"QRegion\"," "\""NS"QSet\"," "\""NS"QString\"," "\""NS"QStringList\"," @@ -3067,30 +3101,30 @@ void *qDumpObjectData440( "\"std::string\"," "\"std::vector\"," "\"std::wstring\"," - "]"; - d << ",qtversion=[" - "\"" << ((QT_VERSION >> 16) & 255) << "\"," - "\"" << ((QT_VERSION >> 8) & 255) << "\"," - "\"" << ((QT_VERSION) & 255) << "\"]"; - d << ",namespace=\""NS"\","; + "]"); + d.put(",qtversion=[" + "\"").put(((QT_VERSION >> 16) & 255)).put("\"," + "\"").put(((QT_VERSION >> 8) & 255)).put("\"," + "\"").put(((QT_VERSION) & 255)).put("\"]"); + d.put(",namespace=\""NS"\","); // Dump out size information - d << "sizes={"; - d << "int=\"" << sizeof(int) << "\"," - << "char*=\"" << sizeof(char*) << "\"," - << ""NS"QString=\"" << sizeof(QString) << "\"," - << ""NS"QStringList=\"" << sizeof(QStringList) << "\"," - << ""NS"QObject=\"" << sizeof(QObject) << "\"," + d.put("sizes={"); + d.put("int=\"").put(sizeof(int)).put("\",") + .put("char*=\"").put(sizeof(char*)).put("\",") + .put(""NS"QString=\"").put(sizeof(QString)).put("\",") + .put(""NS"QStringList=\"").put(sizeof(QStringList)).put("\",") + .put(""NS"QObject=\"").put(sizeof(QObject)).put("\",") #if USE_QT_GUI - << ""NS"QWidget=\"" << sizeof(QWidget)<< "\"," + .put(""NS"QWidget=\"").put(sizeof(QWidget)<< "\",") #endif #ifdef Q_OS_WIN - << "string=\"" << sizeof(std::string) << "\"," - << "wstring=\"" << sizeof(std::wstring) << "\"," + .put("string=\"").put(sizeof(std::string)).put("\",") + .put("wstring=\"").put(sizeof(std::wstring)).put("\",") #endif - << "std::string=\"" << sizeof(std::string) << "\"," - << "std::wstring=\"" << sizeof(std::wstring) << "\"," - << "std::allocator=\"" << sizeof(std::allocator<int>) - << "\"}"; + .put("std::string=\"").put(sizeof(std::string)).put("\",") + .put("std::wstring=\"").put(sizeof(std::wstring)).put("\",") + .put("std::allocator=\"").put(sizeof(std::allocator<int>)) + .put("\"}"); d.disarm(); } -- GitLab