diff --git a/share/qtcreator/gdbmacros/test/main.cpp b/share/qtcreator/gdbmacros/test/main.cpp index 36b354c8512e4c9eef98231f25115b2d33f44d4c..ae56cb0955f78e0f3e23a261d615794775c3cc12 100644 --- a/share/qtcreator/gdbmacros/test/main.cpp +++ b/share/qtcreator/gdbmacros/test/main.cpp @@ -28,13 +28,18 @@ **************************************************************************/ #include <QtCore/QStringList> +#include <QtCore/QVector> +#include <QtCore/QTimer> +#include <QtCore/private/qobject_p.h> #include <string> #include <list> +#include <vector> #include <stdio.h> #include <string.h> + /* Test program for Dumper development/porting. * Takes the type as first argument. */ @@ -106,6 +111,16 @@ static int dumpQIntList() return 0; } +static int dumpQIntVector() +{ + QVector<int> test = QVector<int>() << 1 << 2; + prepareInBuffer("QVector", "local.qintvector", "local.qintvector", "int"); + qDumpObjectData440(2, 42, &test, 1, sizeof(int), 0, 0, 0); + fputs(qDumpOutBuffer, stdout); + fputc('\n', stdout); + return 0; +} + // --------------- std types static int dumpStdString() @@ -142,28 +157,61 @@ static int dumpStdIntList() return 0; } +static int dumpStdIntVector() +{ + std::vector<int> test; + test.push_back(1); + test.push_back(2); + prepareInBuffer("std::vector", "local.intvector", "local.intvector", "int"); + qDumpObjectData440(2, 42, &test, 1, sizeof(int), sizeof(std::list<int>::allocator_type), 0, 0); + fputs(qDumpOutBuffer, stdout); + fputc('\n', stdout); + return 0; +} + +static int dumpQObject() +{ + QTimer t; + QObjectPrivate *tp = reinterpret_cast<QObjectPrivate *>(&t); + const int childOffset = (char*)&tp->children - (char*)tp; + printf("Qt version %s Child offset: %d\n", QT_VERSION_STR, childOffset); + prepareInBuffer("QObject", "local.qobject", "local.qobject", ""); + qDumpObjectData440(2, 42, &t, 1, childOffset, 0, 0, 0); + fputs(qDumpOutBuffer, stdout); + fputc('\n', stdout); + return 0; +} + int main(int argc, char *argv[]) { printf("Running query protocol\n"); - qDumpObjectData440(1, 42, 0, 1, 0, 0, 0, 0); + qDumpObjectData440(1, 42, 0, 1, 0, 0, 0, 0); fputs(qDumpOutBuffer, stdout); fputc('\n', stdout); fputc('\n', stdout); if (argc < 2) return 0; - const char *arg = argv[1]; - if (!qstrcmp(arg, "QString")) - return dumpQString(); - if (!qstrcmp(arg, "QStringList")) - return dumpQStringList(); - if (!qstrcmp(arg, "QList<int>")) - return dumpQIntList(); - if (!qstrcmp(arg, "string")) - return dumpStdString(); - if (!qstrcmp(arg, "list<int>")) - return dumpStdIntList(); - if (!qstrcmp(arg, "list<string>")) - return dumpStdStringList(); - fprintf(stderr, "Unhandled type %s\n", arg); - return 1; + for (int i = 1; i < argc; i++) { + const char *arg = argv[i]; + printf("\nTesting %s\n", arg); + if (!qstrcmp(arg, "QString")) + dumpQString(); + if (!qstrcmp(arg, "QStringList")) + dumpQStringList(); + if (!qstrcmp(arg, "QList<int>")) + dumpQIntList(); + if (!qstrcmp(arg, "QVector<int>")) + dumpQIntVector(); + if (!qstrcmp(arg, "string")) + dumpStdString(); + if (!qstrcmp(arg, "list<int>")) + dumpStdIntList(); + if (!qstrcmp(arg, "list<string>")) + dumpStdStringList(); + if (!qstrcmp(arg, "vector<int>")) + dumpStdIntVector(); + if (!qstrcmp(arg, "QObject")) + dumpQObject(); + } + return 0; }