diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index 555236cd14ce30d9ffe08c24e8069afaea48fa7d..37225b36d57f000e35fc36e1f65c8169f1716b2d 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -1227,6 +1227,64 @@ static void qDumpQChar(QDumper &d) d.disarm(); } +static void qDumpQDate(QDumper &d) +{ +#ifdef QT_NO_DATESTRING + qDumpUnknown(d); +#else + const QDate &date = *reinterpret_cast<const QDate *>(d.data); + if (date.isNull()) { + d.putItem("value", "(null)"); + } else { + d.putItem("value", date.toString()); + d.putItem("valueencoded", "2"); + } + d.putItem("type", NS"QDate"); + d.putItem("numchild", "1"); + if (d.dumpChildren) { + d.beginChildren(); + d.putHash("isNull", date.isNull()); + d.putHash("toString", date.toString()); +# if QT_VERSION >= 0x040500 + d.putHash("toString_(ISO)", date.toString(Qt::ISODate)); + d.putHash("toString_(SystemLocale)", date.toString(Qt::SystemLocaleDate)); + d.putHash("toString_(Locale)", date.toString(Qt::LocaleDate)); +# endif + d.endChildren(); + } + d.disarm(); +#endif // ifdef QT_NO_DATESTRING +} + +static void qDumpQTime(QDumper &d) +{ +#ifdef QT_NO_DATESTRING + qDumpUnknown(d); +#else + const QTime &date = *reinterpret_cast<const QTime *>(d.data); + if (date.isNull()) { + d.putItem("value", "(null)"); + } else { + d.putItem("value", date.toString()); + d.putItem("valueencoded", "2"); + } + d.putItem("type", NS"QTime"); + d.putItem("numchild", "1"); + if (d.dumpChildren) { + d.beginChildren(); + d.putHash("isNull", date.isNull()); + d.putHash("toString", date.toString()); +# if QT_VERSION >= 0x040500 + d.putHash("toString_(ISO)", date.toString(Qt::ISODate)); + d.putHash("toString_(SystemLocale)", date.toString(Qt::SystemLocaleDate)); + d.putHash("toString_(Locale)", date.toString(Qt::LocaleDate)); +# endif + d.endChildren(); + } + d.disarm(); +#endif // ifdef QT_NO_DATESTRING +} + static void qDumpQDateTime(QDumper &d) { #ifdef QT_NO_DATESTRING @@ -1240,10 +1298,9 @@ static void qDumpQDateTime(QDumper &d) d.putItem("valueencoded", "2"); } d.putItem("type", NS"QDateTime"); - d.putItem("numchild", "3"); + d.putItem("numchild", "1"); if (d.dumpChildren) { d.beginChildren(); - d.putHash("isNull", date.isNull()); d.putHash("toTime_t", (long)date.toTime_t()); d.putHash("toString", date.toString()); # if QT_VERSION >= 0x040500 @@ -3492,7 +3549,9 @@ static void handleProtocolVersion2and3(QDumper &d) qDumpQChar(d); break; case 'D': - if (isEqual(type, "QDateTime")) + if (isEqual(type, "QDate")) + qDumpQDate(d); + else if (isEqual(type, "QDateTime")) qDumpQDateTime(d); else if (isEqual(type, "QDir")) qDumpQDir(d); @@ -3638,6 +3697,8 @@ static void handleProtocolVersion2and3(QDumper &d) if (isEqual(type, "QTextCodec")) qDumpQTextCodec(d); # endif + if (isEqual(type, "QTime")) + qDumpQTime(d); break; case 'V': # ifndef QT_BOOTSTRAPPED diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py index b27245d26c5d79b35b322ca0103a1caada255886..ac3eeeffd2f898898fb63c912a0a19a36a224d13 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -158,13 +158,16 @@ def qdump__QModelIndex(d, item): #gdb.execute("call free($mi)") - -def qdump__QDateTime(d, item): +def qdump__QDate(d, item): + if int(item.value["jd"]) == 0: + d.putValue("(null)") + d.putNumChild(0) + return d.putStringValue(call(item.value, "toString('%sQt::TextDate')" % d.ns)) - d.putNumChild(3) + d.putNumChild(1) if d.isExpanded(item): + # FIXME: This improperly uses complex return values. with Children(d, 8): - d.putCallItem("isNull", item, "isNull()") d.putCallItem("toTime_t", item, "toTime_t()") d.putCallItem("toString", item, "toString('%sQt::TextDate')" % d.ns) @@ -180,6 +183,55 @@ def qdump__QDateTime(d, item): item, "toTimeSpec('%sQt::LocalTime')" % d.ns) +def qdump__QTime(d, item): + if int(item.value["mds"]) == -1: + d.putValue("(null)") + d.putNumChild(0) + return + d.putStringValue(call(item.value, "toString('%sQt::TextDate')" % d.ns)) + d.putNumChild(1) + if d.isExpanded(item): + # FIXME: This improperly uses complex return values. + with Children(d, 8): + d.putCallItem("toString", + item, "toString('%sQt::TextDate')" % d.ns) + d.putCallItem("(ISO)", + item, "toString('%sQt::ISODate')" % d.ns) + d.putCallItem("(SystemLocale)", + item, "toString('%sQt::SystemLocaleDate')" % d.ns) + d.putCallItem("(Locale)", + item, "toString('%sQt::LocaleDate')" % d.ns) + d.putCallItem("toUTC", + item, "toTimeSpec('%sQt::UTC')" % d.ns) + #d.putCallItem("toLocalTime", + # item, "toTimeSpec('%sQt::LocalTime')" % d.ns) + + +def qdump__QDateTime(d, item): + if int(item.value["d"]["d"].dereference()["time"]["mds"]) == -1: + d.putValue("(null)") + d.putNumChild(0) + return + d.putStringValue(call(item.value, "toString('%sQt::TextDate')" % d.ns)) + d.putNumChild(1) + if d.isExpanded(item): + # FIXME: This improperly uses complex return values. + with Children(d, 8): + d.putCallItem("toTime_t", item, "toTime_t()") + d.putCallItem("toString", + item, "toString('%sQt::TextDate')" % d.ns) + d.putCallItem("(ISO)", + item, "toString('%sQt::ISODate')" % d.ns) + d.putCallItem("(SystemLocale)", + item, "toString('%sQt::SystemLocaleDate')" % d.ns) + d.putCallItem("(Locale)", + item, "toString('%sQt::LocaleDate')" % d.ns) + d.putCallItem("toUTC", + item, "toTimeSpec('%sQt::UTC')" % d.ns) + #d.putCallItem("toLocalTime", + # item, "toTimeSpec('%sQt::LocalTime')" % d.ns) + + def qdump__QDir(d, item): d.putStringValue(call(item.value, "path()")) d.putNumChild(2)